home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-22 | 152.8 KB | 4,146 lines |
- Copyright (C) 1989, 1996, 1997 Aladdin Enterprises. All rights reserved.
-
- This file is part of Aladdin Ghostscript.
-
- Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author
- or distributor accepts any responsibility for the consequences of using it,
- or for whether it serves any particular purpose or works at all, unless he
- or she says so in writing. Refer to the Aladdin Ghostscript Free Public
- License (the "License") for full details.
-
- Every copy of Aladdin Ghostscript must include a copy of the License,
- normally in a plain ASCII text file named PUBLIC. The License grants you
- the right to copy, modify and redistribute Aladdin Ghostscript, but only
- under certain conditions described in the License. Among other things, the
- License requires that the copyright notice and this notice be preserved on
- all copies.
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- This file, NEWS, describes the changes in the most recent releases of
- Ghostscript. Changes in older releases are described in history*.txt.
-
- For an overview of Ghostscript and a list of the documentation files, see
- README.
-
- Within each release, news appears in the following order: Documentation,
- Procedures, Utilities, Drivers, Platforms, Fonts, Interpreter, Streams
- (included under Interpreter through release 2.9.9), Library. Changes marked
- with a * were made available as patches to a previous release.
-
- Version 5.01 (6/22/97)
- ======================
-
- This fixes a few bugs reported in the 5.0 release. This will be a
- commercially supported release.
-
- Known problems:
- - ps2pdf sometimes produces output with missing links.
- - Setting HWSize by itself with setpagedevice has no effect.
- - When shrinking oversize halftone cells, the current algorithm,
- which progressively halves the size, can produce non-monotonic behavior; GS
- should either use a monotonic algorithm or give a limitcheck.
- (k/jdscreen.ps)
- - In Type 1 fonts, almost-vertical lines that straddle a stem edge
- produce uneven output.
- - The following gs_*.ps files haven't had all the pseudo-operators
- updated to take advantage of stack protection: init, setpd.
- - flushfile with a procedure-target stream doesn't pass the buffered
- data to the procedure.
- - At some resolutions, gaps occur in some character outlines with
- certain Type 1 fonts.
- - The Watcom MS Windows makefile (watcw32.mak) doesn't work.
- - The uniprint driver sometimes drops some output, and is very slow
- at 720x720 resolution.
-
- Documentation
- -------------
-
- Fixes bugs:
- - README referred to an obsolete file devarch.txt. (README)
- - The comment on flip4x12 had a typo. (gsflip.c)
- - The algorithm comments for adjusted_y_spans_pixel weren't precise
- enough. (gxfill.c)
- - The usage message printed by the ps2pdf script didn't indicate
- that one can now insert options before the input file name. (ps2pdf)
- - The file searching documentation didn't indicate that paths
- beginning with ./ or ../ are considered "explicit" and not subject to
- searching. (use.txt)
- - The description of SEARCH_HERE_FIRST in the per-platform makefiles
- indicated that it only applied to initialization files, not to files
- specified on the command line as well. (*.mak)
- - There were still some references to 16-bit implementations.
- (install.txt)
-
- Clarifies that -dNODISPLAY also suppresses output to other devices.
- (use.txt)
-
- Adds the e-mail address for reporting problems to the bug report form, and
- also a space to report makefile changes. (bug-form.txt)
-
- Adds a note under -g indicating that it fixes the media size. (use.txt)
-
- Adds an explanation of why Ghostscript can't use the system libraries for
- the JPEG package. (make.txt)
-
- Notes that ps2ai doesn't work properly with Adobe's Helvetica-Oblique font,
- and other fonts whose original FontMatrix involves skewing or rotation.
- (psfiles.txt)
-
- Updates the uniprint documentation slightly. (devices.txt)
-
- Notes that the new lj5 drivers do not work with the LJ5L. (devs.mak)
-
- Modifies the Aladdin Free Public License slightly to make it clearer that
- the exception for freely redistributable CD-ROMs only applies if the CD-ROM
- is being distributed by itself, not with anything else commercial. (This
- has always been the case, but the previous wording wasn't clear enough.)
- (PUBLIC)
-
- Notes that gcc with -O still has code generation problems on H-P RISC
- machines. (make.txt)
-
- Adds a pointer to Martin Lottermoser's hpdj driver. (new-user.txt)
-
- Enhances and reorganizes the documentation for building Ghostscript, in
- response to user feedback. (make.txt, install.txt)
-
- Adds a description of the EPSF recognition feature. (language.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - string__h was misspelled string_h in one place. (lib.mak)
- - gs_dps.ps wasn't installed by "make install". (unix-end.mak)
- - ccgs (used with non-ANSI C compilers) didn't do the right thing
- with -DPNG_USE_CONST. (ccgs)
-
- Adds support for version 96 of libpng, and updates all the makefiles to
- reference it. (libpng.mak, *.mak)
-
- Updates the MSVC makefiles to get rid of some warning messages and provide a
- way to specify a library path for the final link. (msvc*.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The usage message for the gslp utility had a minor typo.
- (gslp.ps)
- - The "line printer" utility didn't expand tabs properly when
- producing PostScript output. (gslp.ps)
- - The gslp utility didn't automatically include the date. (gslp)
- - The line printer scripts didn't pass the script name to the
- utility program, so the usage message didn't use the correct name. (gsbj*,
- gsdj*, gslj*, gslp*, lp*)
-
- Modifies the gslp utility so that invoking it with no arguments prints the
- usage message. (gslp.ps)
-
- Adds the ability to specify the number of bits per component to the
- CMYK-viewing utility. (viewcmyk.ps)
-
- Changes the ps2pdf script so that on Windows NT, as on Unix, it allows
- omitting the output file name, automatically replacing the extension of the
- input file with .pdf. (ps2pdf.bat)
-
- Drivers
- -------
-
- Fixes bugs:
- - Some compilers didn't accept a #define with the macro name on the
- next line. (gdevpx.c)
- - The procedure dash_pattern_eq was defined in two places.
- (gdevpdf.c)
- - The uniprint driver sometimes dropped some output or got confused,
- because of a misunderstanding about how to update device procedure vectors
- properly. (gdevupd.c)
- - The PostScript and EPS writers produced binary output for images,
- which generally can't be sent to PostScript printers. (gdevpsdf.h,
- gdevpdf.c, gdevps.c)
- - The EPS writer put a %%EOF at the end of the file, which might
- cause problems for some spoolers if the file is embedded in another.
- (gdevps.c)
-
- Changes the implementation of printer drivers so that they flush the output
- stream after each page. We aren't absolutely sure that this is a good idea,
- but it prevents certain anomalous behavior where the last page isn't ejected
- properly. (gdevprn.c)
-
- Implements a long-delayed update to the mgr drivers, to restore the color
- mapping to an older one. (gdevmgr.h, gdevmgr.c)
-
- Updates the uniprint driver with a number of changes from its author.
- (gdevupd.c)
-
- Platforms
- ---------
-
- Adds the JPEG, Postscript, and PCL XL drivers, which are included on all
- other platforms, to the MS Windows platforms. (bcwin32.mak, msvc4.mak,
- msvc5.mak, watcw32.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - composefont defined the resource with the font name and font
- directory interchanged. (gs_cmap.ps)
- - With dFIXEDMEDIA, documents requesting other sizes caused an error
- instead of clipping the page. (gs_init.ps)
- - PageSize Policy = 7 wasn't implemented. (However, the current
- implementation is wrong.) (gs_setpd.ps, zmedia2.c)
- - FontType resource 42 wasn't defined even if Type 42 fonts were
- supported; similarly for FontType 9, 10, and 11 for CIDFonts. (gs_cidfn.ps,
- gs_res.ps)
- - The error handling machinery would break if the name /errordict
- was redefined. (gs_init.ps)
- - Level 1 systems got an /undefined in .doneshowpage. (zdevice.c,
- zdevice2.c)
- - Because of an initialization order problem, copy didn't work on
- gstates. (zgeneric.c)
-
- Adds a naive implementation of findcolorrendering. (gs_lev2.ps, gs_res.ps)
-
- Removes the 'stopped' around run_string[_begin/continue/end] so that, as in
- 4.03, errors print a hex dump and exit with a non-zero code instead of
- printing a readable message and continuing. (We aren't sure that this
- change didn't undo the fix in 5.0 regarding calling startjob from
- run_string.) (gs_init.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - stdin redirection failed for PDF files even if the new stdin was
- seekable. This was fixed in 4.02, but the fix stopped working with the
- introduction of .runexec. (pdf_main.ps)
-
- Makes the cross-reference reader accept a startxref value that points at the
- EOL before the xref line. The Adobe documentation doesn't allow this, but
- some real files are this way. (pdf_main.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The bounding box of a completely empty path was reported as
- garbage. (gxpath2.c)
- - Stroking a path with more than one segment didn't produce correct
- output when anti-aliasing was used. (gspaint.c)
- - The alpha-buffer device returned an incorrect clipping box,
- causing output to be discarded. (gdevabuf.c)
- - gx_forward_get_clipping_box passed the wrong device to the target
- procedure, producing incorrect results. (gdevnfwd.c)
- - The sin/cos procedure did some unnecessary computations
- (performance bug only). (gsmisc.c)
- - The procedure for adjusting the ends of curves to match the
- tangents did some unnecessary computations (performance bug only).
- (gxpcopy.c)
- - RAM-based banding always gave an invalidfileaccess error, due to a
- typo in memfile_fopen. (gxclmem.c)
- - The algorithms for deciding whether a line is thin still weren't
- correct. (gxstroke.c)
- - The fill adjustment values for the any-part-of-pixel case (adjust
- = 0.5) were (0.5-epsilon, 0.5+epsilon), which colored inappropriate
- additional pixels if the higher coordinate was integral. With considerable
- trepidation, we have changed this to (0.5-epsilon,0.5), which does the right
- thing in every case we can think of. (gxfill.c)
- - When banding, paths were clipped to only 0.5 pixel outside their
- bounding box, which may be slightly too conservative; 1 pixel is safer.
- (gxclpath.c)
- - The algorithm for testing whether an adjusted Y value spanned a
- pixel center was incorrect, causing some pixels to get colored incorrectly.
- (gxfill.c)
- - 24-bit devices could cause a memory fault, by accessing a pointer
- just beyond the end of the line pointer array. (gdevm24.c)
- - Astonishingly enough, the determination of which hints were
- applicable to a given segment of a Type 1 character was wrong in several
- different places. Fixing this in a way that correctly handled all allowed
- permutations of the coordinate system was not simple. (gxfont1.h,
- gxhint1.c, gxhint3.c)
- - The debugging printout macros didn't include the syntactic hack to
- prevent an 'else' from begin assigned to the wrong 'if'. (gdebug.h)
- - The bbox device was accidentally limited to 130 x 130 pixels (not
- 130" x 130"). (bug introduced in 5.0) (gdevbbox.c)
- - The bbox device didn't recognize PageBoundingBox in put_params,
- causing a possible /undefined error on [g]restore. (gdevbbox.c)
- - setlinewidth didn't take the absolute value of its operand.
- (zgstate.c)
- - Some code formatting was slightly off. (gximage5.c)
- - Some extra pixels were written for Interpolated images, but they
- were immediately overwritten, so the output was correct. (gximage5.c)
-
- Changes the data flipping API from a macro to a procedure, adds a return
- value, and makes the individual flipping procedures private. (gsflip.h,
- gsflip.c)
-
- Adds (under an #ifdef FUTURE) code to allow passing multi-plane images
- through the band list. (gxclpath.h, gxclimag.c, gxclread.c)
-
- Adds (under an #ifdef FUTURE) code to allow passing interpolated images
- through the band list. NOTE: interpolated images will appear slightly
- different than without banding, because the part of the image intersecting
- each band will be scaled slightly differently in the (device) Y direction.
- (gxclpath.h, gxclimag.c, gxclread.c, gximage.c)
-
- Changes Type 1 hinting so that when it moves points on a curve, it does so
- by properly scaling the curve in the given direction. (gxhint3.c)
-
- Version 5.0 (6/6/97)
- ====================
-
- This is the first public release since 4.03.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Fontmap.Sol was incorrectly referred to as Fontmap.Solaris.
- (use.txt)
- - There was still a reference to pstoppm in the documentation.
- (psfiles.txt)
- - The JPEG DOS source site information was out of date. (jpeg.mak)
- - The list of devices included in the distributed Unix makefiles was
- out of date. (make.txt)
- - The MCU size limitation on the DCT filters was documented
- incorrectly. (current.txt)
- - The URL for the uniprint driver home page was incorrect.
- (devices.txt)
- - The makefiles referred to sfilefd.c, which is now named sfxfd.c.
- (gs.mak, *.mak)
-
- Adds a VMS help file. (gs-vms.hlp)
-
- Removes documentation for Digital Unix (OSF/1) 1.2 and 1.3, which are now
- long obsolete, and updates the documentation for current versions.
- (make.txt)
-
- Notes that there may be a problem with libpng version 0.95. (libpng.mak)
-
- Adds some specific documentation for the JPEG drivers. (devices.txt)
-
- Adds a suggestion that people compiling Ghostscript check the values of
- JVERSION and PVERSION. (make.txt)
-
- Removes the requirement for setting the LIB environment variable when
- compiling with MSVC. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - There were a number of small errors in the new OpenVMS makefile.
- (openvms.mak)
- - The MSVC makefiles omitted a necessary switch to work around some
- "unspecified Pentium bugs". (msvccom.mak)
- - The Borland makefile wasn't even close to working; fixing it
- required moving the compilation rule for genarch.exe into the
- compiler-specific makefiles. (bcwin32.mak, msvccom.mak, watcw32.mak,
- wincom.mak)
- - There were some (harmless) undefined macro references in the MSVC
- makefile. (msvccom.mak)
-
- Makes it unnecessary to set the LIB environment variable for MSVC.
- (msvc4.mak, msvc5.mak, wincom.mak)
-
- Adds a note on compiling with the cygwin32 gcc compiler for Windows NT.
- (make.txt)
-
- Updates vms.mak yet again, hopefully for the last time. (vms.mak)
-
- Moves the CGM, JPEG, and MIFF file formats from DEVICE_DEVS8 to
- DEVICE_DEVS14 to shorten command lines; adds pcxcmyk to all platforms that
- include PCX format at all; adds jpeggray to all platforms that include jpeg.
- (devs.mak, *.mak)
-
- Adds -DPNG_USE_CONST for compiling libpng, to get rid of compiler warning
- messages. (gs.mak)
-
- Removes obsolete makefiles from the fileset. (tccommon.mak, tctail.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - restore was broken if -dNOBIND was invoked. This fix should have
- been in the 4.81 fileset, but was left out due to operator error.
- (gs_dps1.ps)
- - Some compilers complained about macro argument replacement within
- a string literal. (isave.c)
- -dSAFER didn't allow opening the %stdxxx files, which caused the
- combination of -dSAFER and -dNOBIND to cause an infinite error.
- (gs_init.ps)
- - If C code used run_string to execute a startjob, an error
- occurred. (gs_init.ps)
-
- Library
- -------
-
- Fixes bugs:
- - Some compilers complained about macro argument replacement within
- a string literal. (gxclbits.c, gdevpdfi.c)
- - At certain resolutions, a 1-pixel line of the wrong color could
- appear at one edge of landscape-oriented monobit images. (This is the 4th
- or 5th time we have "fixed" this one infuriatingly fragile piece of code.)
- (gxfixed.h, gximage1.c)
- - The optimized code for landscape monobit images overlooked the
- possibility of partial images, causing parts of images to be translated and
- possibly clipped. (Yes, it's that same fragile piece of code.)
- (gximage1.c)
- - The bounding box device allowed resetting its resolution, which
- could cause limitchecks from coordinate overflow. Our fix is to initialize
- the device to a very high resolution (4000 dpi), which reduces the maximum
- page size it can handle to about 130" on a side. (gdevbbox.c)
- - The bounding box device wasn't identified as a page device.
- (gdevbbox.c)
- - The bounding box device used alone disregarded changes in page
- size. (gdevbbox.c)
- - One old compiler didn't allow a structure member name to be the
- same as a typedef name. (gximage.h, gximage.c, gximage4.c)
- - The height and band intersection computations for banded images
- still weren't right, leading to inconsistencies in the band list and errors
- in the output (typically, thin horizontal white stripes at band boundaries).
- (gxclimag.c)
-
- Adds an extensive memory dump facility to the standard allocator.
- Eventually this should be moved into a separate file, but it would be too
- disruptive to do this just before a release. (gsalloc.c)
-
- Version 4.81 (6/1/97)
- =====================
-
- This is a last-minute set of bug fixes before the 5.0 release.
-
- Documentation
- -------------
-
- Adds some overlooked helpers to the list. (helpers.txt)
-
- Procedures
- ----------
-
- Makes a distinction between 2-part and 3-digit version numbers.
- (version.mak, vms.mak)
-
- Utilities
- ---------
-
- Develops the Type 1 to CFF converter a little further; it is still NOT
- USABLE. (t1tot2.ps)
-
- Removes the pstoppm.ps script, since the p*m drivers supersede it.
- (pstoppm.ps, unix-end.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The PDF writer sometimes omitted an ET command before setting the
- clip path. (gdevpdf.c)
- - The PDF writer didn't initialize the "vector" state, leading to
- some redundant output (performance bug only). (gdevpdf.c)
- - The PDF writer wrote clip paths even when they included the entire
- page (performance bug only). (gdevpdf.c)
-
- Changes the PDF writer so that it recognizes not only the 14 built-in fonts
- but any font with the same UniqueID and metrics. This covers some common
- cases of re-registering a font with a variant Encoding. (gs_pdfwr.ps)
-
- Platforms
- ---------
-
- Fixes bugs:
- - SEARCH_HERE_FIRST was accidentally set to 0 on MS Windows
- platforms. (bcwin32.mak, msvc4.mak, msvc5.mak, watcw32.mak)
-
- Adds code to remove "" around arguments in the command line passed to
- WinMain (MS Windows platforms). (dwmain.cpp, dwmainc.cpp)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - setsystemparams was broken. (gs_lev2.ps)
- - restore was broken if -dNOBIND was invoked. (gs_dps1.ps)
- - deviceinfo returned much more information than it should.
- (gs_dps.ps)
- - The fix for the default EndPage procedures not popping their page
- count operand from the stack was wrong. (gs_init.ps, gs_setpd.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The saved character origin took the translation component of the
- FontMatrix into account, which caused charpath on fonts with non-zero
- translation in the FontMatrix to produce incorrect results. (gschar.c)
-
- Removes incorrect access attributes on a couple of files. (gdevpdfm.c,
- gxclist.h)
-
- Version 4.80(limited) (5/28/97)
- =====================
-
- This is the candidate fileset for the 5.0 release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The one-line description of the color image rendering module was
- incorrect. (gximage3.c)
- - Some of the VMS documentation was out of date. (make.txt,
- use.txt)
- - The description of the file name separator for -sFONTMAP= was
- wrong. (use.txt)
- - PSFile was misspelled PSfile. (use.txt)
- - There were some minor typos. (gstype1.h)
- - The build instructions had a lot of obsolete information for PC
- environments, and didn't cover Microsoft Visual C++. (make.txt)
-
- Explains that -sPAPERSIZE= only specifies the default papersize, and that
- forcing a particular paper size also requires -dFIXEDMEDIA. (use.txt)
-
- Adds information about building with GNU make on OpenVMS. (make.txt)
-
- Clarifies the meaning of EOFC for streams. (strimpl.h)
-
- Documents the new dictionary argument for the eexecDecode filter.
- (language.doc)
-
- Procedures
- ----------
-
- Fixes bugs:
- - gs_epsf.ps didn't get installed on Unix systems. (unix-end.mak)
- - The code wouldn't build with libpng 0.95b. (libpng.mak)
- - One of the VMS scripts used CC_QUAL instead of CC_DEF.
- (vms-cc.mak)
- - version.mak wasn't included in a dependency list. (unix-end.mak)
-
- Brings the VMS DCL script up to date again (for the last time, we hope).
- (vms.mak)
-
- Modifies all platform-independent uses of upper-case command line arguments
- to deal properly with VMS, where the shell converts all command line
- arguments to lower case, without requiring quotation. (devs.mak, gs.mak,
- int.mak, lib.mak, zlib.mak)
-
- Moves the compilation rules for the third-party libraries into gs.mak, so
- they can be used to compile the callers as well. (gs.mak, jpeg.mak,
- libpng.mak, zlib.mak)
-
- Adds a set of files that allow building on OpenVMS using GNU make (slightly
- patched). The timing on this is unfortunate, but we've wanted this for a
- very long time. NOTE: be sure to look in the OpenVMS section of make.txt
- for information on patching GNU make. (openvms.mak, append_l.com,
- rm_all.com, rm_one.com, copy_one.com)
-
- Adds new makefiles for building on 32-bit Windows with Borland, Watcom, and
- Microsoft Visual C++ (versions 4.x and 5.0). The timing on this is
- unfortunate too, but having this capability is so important that we couldn't
- pass it up. (bcwin32.mak, msvc4.mak, msvc5.mak, msvccom.mak, watcw32.mak,
- wincom.mak)
-
- Removes now-obsolete makefiles. (dwcommon.mak, msc.mak, msvcwint.mak,
- mscbegin.bat, watcwin.mak)
-
- Utilities
- ---------
-
- Extends echogs to work in VMS environments, where the shell converts all
- command line arguments to lower case, without requiring quotation.
- (echogs.c)
-
- Adds a sketch of a utility for converting Type 1 fonts to CFF. DOESN'T WORK
- YET: DON'T TRY TO USE IT. (t1tot2.ps, type1ops.ps, writecff.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - A type declaration wasn't compatible with libpng 0.95.
- (gdevpng.c)
- - kshow wasn't handled properly when producing PDF output.
- (gs_pdfwr.ps)
- - The PDF writer put out unnecessary ET/BT commands. (gdevpdfx.h,
- gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
- - The PCL XL writer put out real numbers for the miter limit, which
- are not allowed (!). (gdevpx.c)
- - The PCL XL writer didn't combine successive curves into a single
- curve command (performance bug only). (gdevpx.c)
- - The PCL XL writer could write uncompressed images with a tag
- saying they were compressed. (gdevpx.c)
- - The PCL XL writer always selected U.S. letter paper, rather than
- the requested size. (gdevpxen.h, gdevpx.c)
- - The PCL XL writer reselected the paper size on every page, even if
- it hadn't changed. (gdevpx.c)
- - The PCL XL writer always used shorts for line and curve
- coordinates, rather than using bytes when possible (performance bug only).
- (gdevpx.c)
- - Because of a compiler bug, a macro with argument conflicted with a
- variable name. (gdevpdfx.h, gdevpdf.c)
- - A picky compiler objected to an extern for an undefined structure.
- (gdevpsdf.h)
- - The PDF writer sometimes didn't reset the clipping path, causing
- bitmaps or rectangle to disappear. (gdevpdf.c, gdevpdfi.c)
- - The PDF writer produced invalid output if the first page was
- blank. (gdevpdf.c)
- - The AutoRotatePages parameter for PostScript and PDF output (which
- doesn't actually do anything yet) incorrectly expected a Boolean value
- rather than an enumeration. (gdevpsdf.h, gdevpsdf.c)
- - Some places returned -1 for an error without calling gs_note_error
- or gs_return_error. (gdevm1.c, gdevmpla.c, gdevrun.c, gxclpath.c)
- - The PCL XL writer produced extremely large files because it didn't
- download character bitmaps. (OK, this isn't really a bug fix.) (gdevpx.c)
- - The forwarding implementation of get_page_device didn't do the
- right thing. (gdevnfwd.c)
- - The x11alpha device didn't implement get_params properly, leading
- to anomalous behavior. (gdevxalt.c)
- - The PDF writer produced incorrect Count values for outlines: the
- count only counted descendant leaves, omitting intermediate nodes.
- (gdevpdfm.c)
-
- Removes an assumption that images have at most 4 components. (gdevpdfi.c)
-
- Adds an x11gray2 device, primarily for debugging. (devs.mak, gdevxalt.c)
-
- Updates the unified printer driver with a newer version. (uninfo.ps,
- gdevupd.c, *.upp)
-
- Platforms
- ---------
-
- Adds the P*M devices and the X11 devices (commented out) to the OS/2
- makefile. (os2.mak)
-
- Updates the MS Windows platform to be compatible with Microsoft Visual C++
- (as well as Watcom and Borland compilers). (gsdll32.def, gdevmswn.h,
- gp_mswin.h, gsdll.h, dwimg.cpp, dwmain.cpp, dwmainc.cpp, dwtext.cpp,
- gdevwdib.c, gdevwprn.c, gdevwpr2.c, gp_mswin.c, gsdll.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - Certain synthetic fonts incorrectly were loaded into local rather
- than global VM. (These fonts are not part of the standard distribution.)
- (gs_fonts.ps, gs_pfile.ps, *ss*.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The FAKEFONTS scan could leave junk on the stack. (gs_fonts.ps)
- - Dynamically loading known encodings on demand left junk on the
- stack, causing a typecheck error. (gs_res.ps)
- - Some 'static' declarations were missing (gcc lossage). (iname.c)
- - Some internal operators didn't have names, leading to unhelpful
- error printout. (zfileio.c)
- - The resource "operators" didn't always restore the stacks properly
- on an error. (gs_res.ps)
- - The CID font code left a garbage value on the stack during
- loading. (gs_cidfn.ps)
- - The defineresource implementation for built-in resources like
- FMapType didn't leave the resource "value" on the stack. (gs_res.ps)
- - If an operator defined by a procedure was bound into a packed
- procedure, the stack-protection feature wasn't effective. (interp.c)
- - findfont didn't restore the stack if it failed. (gs_res.ps)
- - The showpage count passed to the BeginPage and EndPage procedures
- was incremented only if a page was printed, rather than for every invocation
- of showpage. (gs_init.ps, zdevice2.c)
- - The default EndPage procedures didn't pop their page count operand
- from the stack. (gs_init.ps, gs_setpd.ps)
- - If the argument of findfont wasn't a name or a string, and no font
- with that key had been registered, an error occurred. (gs_fonts.ps,
- gs_res.ps)
-
- Updates most of the remaining pseudo-operators to take advantage of stack
- protection. (gs_btokn.ps, gs_cmap.ps, gs_dps1.ps, gs_dps2.ps, gs_fonts.ps,
- gs_lev2.ps, gs_pdfwr.ps)
-
- Splits the image operators into a separate file from the path painting
- operators. (This should have been done a long time ago.) (iimage.h,
- zimage.c, zpaint.c)
-
- Adds more of the implementation of the NeXT alpha and compositing
- operations, under an #ifdef DPNEXT. (iimage.h, zcolor1.c, zdpnext.c,
- zimage.c)
-
- Adds more of the implementation of DPS contexts. These are still not
- usable. (icontext.h, icontext.c, zcontext.c, zmath.c)
-
- Changes the help message to describe -dBATCH instead of -c quit.
- (imainarg.c)
-
- Recognizes the dictionary argument for the eexecDecode filter. (zmisc1.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The tracing message when starting to decode 1-D fax data reported
- the run_color incorrectly. (scfd.c)
- - In the CCITTFaxDecode filter, if a buffer boundary fell between a
- makeup code and a final zero-length termination code, an ioerror could
- occur. (scfd.c)
- - Per Adobe, in the CCITTFaxDecode filter, EndOfBlock = true should
- cause Rows to be ignored. (scfd.c)
- - If an output stream returned EOFC, an infinite loop might result.
- This problem (and the fix) are in the same fragile code as the EOD fix in
- 4.74, and we may again have introduced a new bug. (stream.c)
-
- Changes the eexecDecode filter so that instead of a number, it can take a
- dictionary with two keys, seed and lenIV. (Having eexecDecode skip initial
- bytes at all was a design bug that is too late to fix.) (sfilter.h,
- seexec.c)
-
- Library
- -------
-
- Fixes bugs:
- - The default mapping from RGB+alpha to RGB didn't lighten
- (premultiply) the color according to the alpha value. (gxcmap.c)
- - The angle error metric for rational tangent screen parameters
- should be simply the difference in angle, not a ratio. (gshtscr.c)
- - gs_setcolorscreen and gs_sethalftone didn't initialize an
- allocator pointer, leading to memory access errors. (gsht1.c)
- - If a banded image was clipped, an invalid band list could be
- produced. (gxclimag.c)
- - A picky compiler wouldn't allow an enum to be &&'ed with a
- boolean. (gschar.c)
- - A short-sighted compiler didn't allow the use of actual procedure
- names (as opposed to procedure variables) in a conditional expression.
- (gxfill.c)
- - A compiler objected to a name longer than 31 characters. (gzht.h,
- gsht.c, gxclread.c)
- - The height computations for banded images were not consistent,
- possibly leading to invalid band lists. (gxclimag.c)
- - copypage didn't reset the band writer and band reader bookkeeping
- consistently, leading to incorrect output and possible errors. (gxcldev.h,
- gxclist.c, gxclread.c)
- - When banding, changing the halftone could lead to accessing memory
- after freeing it. (gxclread.c)
- - When using disk files for band storage, showpage didn't actually
- delete or truncate the band list file, possibly causing subsequent copypage
- operations to become confused. (gxclfile.c)
- - When banding, having more than one image operator in progress at a
- time confused the rasterizing pass and could produce arbitrary errors. From
- PostScript, this can only happen in the case of an image whose data source
- was a procedure-based stream that itself invoked an image operator: this is
- a senseless and perverse thing to do, but it shouldn't break the code (and a
- Genoa CET file actually does it). (gxclist.h, gxclimag.c, gxclist.c)
- - Some picky compilers objected to negating unsigned values.
- (gsuid.h, gsht.c, gsmemory.c, gxpcopy.c)
- - When banding, if a 90- or 270-degree rotated monobit image was
- clipped, invalid memory accesses could occur. (gximage.h, gximage1.c)
- - The showpage count passed to the BeginPage and EndPage procedures
- was incremented only if a page was printed, rather than for every invocation
- of showpage. Fixing this requires removing the incrementing of the count
- from the library level altogether. (gsdevice.c)
- - When rendering a subrectangle of an image, the X DDA was
- initialized incorrectly, causing possible errors. We think this only
- affected certain banded images. (gxdda.h)
-
- Adds a provision for images with an alpha component, under an #ifdef DPNEXT.
- ****** THE BANDING CODE HAS NOT BEEN UPDATED YET. ****** (gsiparam.h,
- gxcmap.h, gxdither.h, gximage.h, gsimage.c, gxclimag.c, gxclread.c,
- gxcmap.c, gximage.c, gximage3.c, gximage4.c ****** NOT DONE YET ******,
- gximage5.c)
-
- Adds a return_if_error macro to capture the common idiom of making a call
- and then returning its value if that value is negative (error). (gserror.h)
-
- Version 4.74(limited) (5/5/97)
- =====================
-
- This fileset is supposed to fix all remaining errors reported by the Genoa
- CET, and is intended to be the last incremental test fileset before the 5.0
- release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Mark procedures are *not* executed in the normal return case.
- (estack.h)
- - The line_params element of a gs_imager_state is *not* allocated
- separately. (gsstate.c)
- - The value passed to the PDF writer for text is a dictionary, not
- an array. (gdevpdft.c)
-
- Improves the documentation of gstate memory management. (gsstate.c)
-
- Documents end_status = EOFC for writing streams. (stream.h, strimpl.h)
-
- Clarifies memory management for halftones and device halftones. (gsht1.h,
- gxdht.h, gxht.h, gzht.h)
-
- Removes the "experimental" tag from the PostScript and EPS writers.
- (devs.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The viewpcx utility scaled images improperly. (viewpcx.ps)
- - If a PDF file used F instead of f for filling a path, pdf2ps
- didn't output the fill operation. (pdf_base.ps)
-
- Changes the ps2pdf script so that, like pdf2ps, it allows debugging
- switches. (ps2pdf)
-
- Drivers
- -------
-
- Fixes bugs:
- - The vgalib driver didn't clip monobit images properly.
- (gdevvglb.c)
- - The X driver asked for exposure events to be reported, but never
- read them, causing the event queue to grow indefinitely. (gdevxini.c)
- - The "vector" drivers and the PDF writer didn't properly keep track
- of whether the current clipping region was the default one. (gs_pdfwr.ps,
- gdevvec.h, gdevvec.c, gdevpdf.c, gdevpdft.c)
- - The PDF writer had word and character spacing interchanged.
- (gdevpdft.c)
- - The PDF writer scaled word and character spacing incorrectly.
- (gdevpdft.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The user object operators didn't leave the stack in a clean state
- if they failed. (gs_dps2.ps)
- - UserObjects wasn't actually defined. (gs_dps2.ps)
- - deviceinfo and set/currenthalftonephase were defined even if the
- dps feature wasn't selected. (int.mak, gs_dps.ps, gs_dps1.ps, gs_lev2.ps,
- zdps.c, zdps1.c)
- - The dps feature didn't automatically include the level2 feature,
- which it needs. (int.mak)
- - The DPS user names mechanism didn't work, since the user names
- array was subject to save and restore. (It still doesn't really work --
- there is no provision for expanding the user names array, which is created
- with length 0.) (gs_btokn.ps, ivmspace.h, zbseq.c, zdps.c)
- - The DPS context operators didn't do all the necessary error
- checking. (zcontext.c)
- - The debugging printout for names printed the name index in hex
- without identifying it as such. (idebug.c)
- - Adding the first non-name key (or name key with a name index
- beyond 4K) to a dictionary that had any deleted entries could cause some
- entries to apparently disappear. (idict.c)
- - If a sub-table of the name table was freed during garbage
- collection, memory could be left in an inconsistent state. (iname.c, igc.c)
- - findfont didn't restore the stacks reliably if an error occurred.
- (gs_fonts.ps)
- - definefont with an invalid Type 0 font sometimes added a FID entry
- (with a dangling pointer) if it failed. (Recovering properly from a VMerror
- during font creation would require a much more complicated fix than this,
- but since we expect a garbage collection to occur in that case, we aren't
- concerned about it.) (zfont0.c)
- - Reading parameter values from a dictionary could access beyond the
- end of the array that keeps track of which entries had been referenced.
- (idict.h, idict.c, iparam.c)
- - Halftone data was allocated in the current VM rather than in the
- same VM as the halftone dictionary or procedure. (Fixing this includes
- updating code as necessary for the change in halftone and device halftone
- allocation.) (iht.h, ivmspace.h, zht.c, zht1.c, zht2.c)
- - Closed non-executable files on the e-stack could cause a restore
- to be invalid. (zvmem.c)
-
- Adds skeleton code for the NeXT Display PostScript alpha and compositing
- operators. This is not ready for use yet! (errors.h, gs_dpnxt.ps,
- zdpsnext.c)
-
- Implements more of state saving and restoring for Display PostScript
- contexts. This is not ready for use yet either. (int.mak, icontext.h,
- istack.h, icontext.c, zcontext.c)
-
- Adds stub code for the Display PostScript view clip operators. (gs_dps.ps,
- zdps.c)
-
- Removes the obsolete PPM-writing operator. (int.mak, vms.mak, *.mak,
- zwppm.c)
-
- Makes the random number generator state public so it can be stored in the
- context state. (zmath.c)
-
- Changes the flag for forcing global garbage collection to a run-time
- variable, for debugging. (igc.c)
-
- Changes the handling of job control so that it doesn't use procedures that
- produce an execstackoverflow when being printed. (gs_init.ps)
-
- Updates code as necessary for the change in reference counting. (zcie.c,
- zcrd.c)
-
- Updates code as necessary for the change in off-stack gstate copying.
- (zdps1.c)
-
- Removes a small bit of obsolete code. (interp.c)
-
- Streams
- -------
-
- Fixes bugs:
- - An output stream that was not the last one in a pipeline could
- incorrectly be asked to write its EOD marker more than once. (The fix is
- very fragile and may have introduced new bugs.) (stream.c)
-
- Library
- -------
-
- Fixes bugs:
- - The gx_device_halftone_release procedure was declared in two
- different header files. (gzht.h)
- - Off-stack copying of gstates could lead to a situation where
- different parts of a single gstate were owned by different allocators; this
- could cause them to be freed improperly, corrupting memory. We fixed this
- partly by making the mixed ownership situation work, and partly by copying
- more of the gstate when off-stack gstates are involved. Unfortunately, the
- fixes are subtle and may have introduced new bugs. (gsstate.h, gsht.c,
- gsht1.c, gspcolor.c, gsstate.c)
- - If an error occurred while creating a Pattern instance, the
- partially initialized instance structure wasn't freed. (gspcolor.c)
- - Halftones and device halftones didn't allocate their clones or
- their subsidiary structures with the correct allocator. (gsht.c, gsht1.c)
- - The error statement when allocating a reference-counted object had
- to be a control transfer. (gsrefct.h)
- - Copying gstates incorrectly copied the memory and saved pointers,
- and the pointer to the dash pattern. (gsstate.c)
- - Flatness values less than 0.5 produced far more line segments than
- necessary (roughly the square of the required number). Fixing this may have
- bad effects on character quality -- this remains to be seen. (gxpflat.c)
- - An error during installation of a halftone could leave things in
- an inconsistent state. (gsht.c)
- - The API didn't provide enough flexibility with respect to memory
- management for halftones, or guarantee consistent allocation of a halftone
- and its subelements. (gsht1.h, gsht.c, gsht1.c, gshtscr.c)
- - Releasing a path didn't clear enough pointers to ensure clean
- garbage collection. (gxpath.c)
- - Finalizing or discarding a (cached) scaled font didn't properly
- unlink it from the scaled_fonts list. (gsfont.c)
- - Invoking an image operator within the BuildChar procedure for a
- charpath caused an infinite loop. (gsimage.c)
- - The bookkeeping for the scaled font cache was incorrect: the count
- didn't always get decremented when a scaled font was freed. (gsfont.c)
- - "High level" masked images were written incorrectly in the band
- list as black-and-white images. (gxclimag.c)
- - For "high level" images with fewer than 4 samples per pixel,
- non-standard Decode values were written incorrectly in the band list.
- (gxclimag.c)
- - The color wasn't set correctly for "high level" masked images.
- (gxclimag.c)
- - The fastest case of monobit image rendering could get a memory
- access error if the image lay partly outside the page. (gximage1.c)
- - Clipping with an empty path was a no-op, rather than clipping out
- everything. (gxcpath.c)
-
- Makes reference-counted objects remember which allocator owns them: this
- entails a NON-BACKWARD-COMPATIBLE change to some of the macros for reference
- counting. This was necessary to fix the off-stack gstate copying problem.
- (gsrefct.h, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscsepr.c,
- gsstate.c, gxclread.c)
-
- Refactors the unpacking of image data, to make unpacking available as a
- general facility. (gximage.h, gxsample.h, gximage.c, gximage0.c,
- gximage1.c, gximage4.c, gxsample.c)
-
- Enhances -Z? so that before freeing an object, it checks that the object was
- owned by the correct allocator. (gsalloc.c)
-
- Version 4.73(limited) (4/19/97)
- =====================
-
- This is an incremental bug fix release made primarily to provide a
- synchronization point for an upcoming trip.
-
- Documentation
- -------------
-
- Fixes bugs:
- - A reference to the uniprint documentation was incorrect.
- (current.txt)
- - -Olimit 1000 is not enough now for DEC Ultrix, 1200 is required;
- this is also required for SGI IRIX. (make.txt)
-
- Adds argument/result comments to all the operators defined in gs_lev2.ps.
- (Eventually we will do this for all operators defined as PostScript
- procedures.) (gs_lev2.ps)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The makefiles didn't provide a default value for GCONFIG_EXTRAS.
- (gs.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - pdf2ps didn't work with TrueType or compressed Type 1 fonts.
- (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - A cast from byte to char was omitted. (gdevpdfm.c)
-
- Platforms
- ---------
-
- Updates the VMS script (again). (vms.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - A module that used strlen didn't include string_.h. (zdevice.c)
- - Because of some bad PostScript code in FrameMaker output, identity
- rather than unity black generation and undercolor removal functions are
- required on black-and-white devices. (gs_init.ps)
- - A harmless internal error during initialization left bogus
- information in $error. (gs_cidfn.ps)
- - startjob didn't clear the execution stack. Fixing this required
- NON-BACKWARD-COMPATIBLE changes to the internal operators .instopped, .stop,
- and .stopped, which are not supposed to be used by any external code.
- (startjob will still give errors if executed in a file that isn't being
- piped from stdin; this will take longer to fix.) (gs_init.ps, gs_lev2.ps,
- iref.h, imain.c, interp.c, zcontrol.c, zfile.c)
-
- Adds a new .execn operator, part of the startjob changes, that allows
- pushing multiple items on the exec stack. Eventually this will allow us to
- get rid of many dynamically created closures. (zcontrol.c)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Landscape-mode PDF files weren't rotated properly. (gs_pdf.ps,
- pdf_main.ps)
-
- Makes the default PDF configuration notify users more informatively when
- encountering an encrypted file. (pdf_sec.ps)
-
- Streams
- -------
-
- Makes the RunLengthEncode filter always generate optimally compressed
- output. We did this because we thought one of the Genoa CET files loops
- forever if this is not the case; but we were wrong. (srle.c)
-
- Library
- -------
-
- Fixes bugs:
- - If one coordinate of a position or distance overflowed the
- internal representable range, the other coordinate became garbage. (bug
- introduced in 4.70) (gspath.c)
- - The bounding box computation for strokes was slightly too large
- (sometimes much too large). (gxpaint.h, gdevbbox.c, gxclpath.c, gxstroke.c)
-
- Adds (under an #if 0) an experimental alternate halftone cell choice
- algorithm. (gshtscr.c)
-
- Adds a better comment to a particularly obscure line of C code.
- (gxclimag.c)
-
- Version 4.72(limited) (4/14/97)
- =====================
-
- This is another bug fix release, motivated mostly by Genoa testing. It also
- updates the new uniprint driver with a major revision, and upgrades CFF
- support a little bit.
-
- Documentation
- -------------
-
- Fixes bugs:
- - -dNOGC only disables default automatic garbage collection, not all
- garbage collection. (use.txt)
- - Apparently a different set of flags is needed for newer H-P
- compilers. (make.txt)
-
- Replaces the tiny FAQ with a pointer to the on-line FAQ. (use.txt)
-
- Updates the documentation for the uniprint driver. (devices.txt)
-
- Clarifies the fact that Ghostscript reads Fontmap files from *all*
- directories in the search list. (use.txt)
-
- Notes that building on Linux may require SM and ICE in the list of X
- libraries. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - An -include type42 was omitted from the level2 module description.
- (int.mak)
- - A mention of $(ECHOGS) in the rule for sfile should have been
- $(ECHOGS_XE). (lib.mak)
- - The pcx2up sample device should have been put in devs.mak rather
- than lib.mak. (devs.mak, lib.mak)
- - scanchar.h and scantab.c belong in the library, not the
- interpreter. (devs.mak, int.mak, lib.mak)
- - Some _h definitions were used before being defined, or weren't
- defined at all. (devs.mak, lib.mak)
- - The JPEG driver was missing a dependency. (devs.mak)
- - The PDF writer was missing a dependency. (devs.mak)
- - Building Level 1 systems was no longer possible. (int.mak)
-
- Updates the VMS build scripts. (vms.mak, vms-decc.mak)
-
- Adds *.upp to the list of files installed under Unix. (unix-end.mak)
-
- Adds rules to the Unix makefiles to build two library files: gs.a,
- consisting of the entire PostScript/PDF interpreter lacking only gs.c, and
- gslib.a, consisting of the graphics library without the gslib.c test driver.
- (ansihead.mak, cc-head.mak, gcc-head.mak, unixtail.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The PS/EPS writers could generate a reference to an undefined
- name. (gdevps.c)
- - The PDF writer produced incorrect output for multi-level outlines.
- (gdevpdfm.c)
- - The PDF writer didn't convert /Action to /A, and /Action/Subtype
- to /S, in Annot dictionaries. (gdevpdfm.c)
- - The PDF writer didn't work in Level 1 systems. (gs_pdfwr.ps)
- - The PDF writer didn't transform /Rect and /R values to current
- user coordinates. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfm.c)
- - The PNG writer could refer to the 3 predefined stdio files even in
- environments where this was undesirable. (gdevpng.c)
- - The PDF writer had a compiled-in limit of 100 pages of output.
- (gdevpdfx.h, gdevpdf.c)
-
- Updates the uniprint driver with a major revision that uses device
- parameters that can be set from the command line, rather than PostScript
- code, for configuration choices. (gdevupd.c, *.upp)
-
- Platforms
- ---------
-
- Fixes bugs:
- - gp_enumerate_files_next had no way to return an error. (gp.h,
- gp_dosfe.c, gp_ntfs.c, gp_os2.c, gp_unifs.c, gp_vms.c) ****** NOT
- IMPLEMENTED YET ******
- - On the Watcom platform, CPU_TYPE >= 486 didn't automatically set
- FPU_TYPE to 387. (wccommon.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Caching the current device in userdict could create dangling
- references. (gs_init.ps, gs_pdfwr.ps, zdevice.c)
- - If an error occurred in a BuildChar or BuildGlyph procedure, the
- graphics state stack wasn't restored. (ichar.h, zchar.c, zchar2.c)
- - There was an obsolete check for a structure when cleaning up after
- a show operator. (zchar.c)
- - Attempting to show a character with no associated glyph in a Type
- 3 font with a BuildGlyph procedure caused an error. (zchar.c)
- - noaccess on a read-only dictionary didn't give an error.
- (ztype.c)
- - The dictionary passed to a Pattern's PaintProc was the original
- template, not the copy made by makepattern. (gs_lev2.ps)
- - Invalid font parameters could result in partially constructed
- fonts, which caused problems for restore. (zfont0.c, zfont2.c)
- - Files run under job control caused an error when terminating.
- (gs_init.ps)
- - setpagedevice didn't protect itself against malfunctioning
- BeginPage or EndPage procedures. (The protection is still not perfect.)
- (gs_setpd.ps)
- - .type42execchar called font_param redundantly. (zchar42.c)
- - The font operators didn't protect themselves well enough against
- bogus font dictionaries. (zfont.c, zfont0.c)
- - If an error occurred within a stringwidth, the graphics state
- stack wasn't restored properly. (zchar.c)
- - If an error occurred within the PaintProc of a form, the graphics
- state stack was left with an extra entry. (gs_lev2.ps)
- - Registering a font under a second name could corrupt data
- structures. (zfont2.c)
- - Different scalings of the same font should have "equal" fontIDs,
- to match the Adobe implementations. (iutil.c)
- - Errors detected by PostScript code during initialization either
- allowed execution to continue or produced a hex stack dump, instead of just
- producing a message and exiting. (interp.c)
- - The memory validator didn't validate chunks at previous save
- levels. (ilocate.c)
- - The Level 1 size of systemdict was too small. (iinit.c)
- - Attempting to define a Category resource in local VM gave a
- typecheck error rather than an invalidaccess. (gs_res.ps)
- - Building Level 1 systems was no longer possible. (zusparam.c)
-
- Rearranges the interpreter code slightly so that all operator invocations go
- through a single procedure when debugging. (interp.c)
-
- Adds a -K<numK> switch to limit the total amount of memory that Ghostscript
- can acquire. (imainarg.c)
-
- Makes the memory validator check packed refs more carefully. (ilocate.c)
-
- Makes the memory validator check explicitly for pointers to freed objects.
- (igc.c, ilocate.c)
-
- Makes the memory validator check dictionaries more carefully. (ilocate.c)
-
- Makes the memory validator check refs embedded in structures. (ilocate.c)
-
- Adds a debugging option that bypasses the garbage collector entirely.
- (igc.c)
-
- Adds debugging options to validate memory before/after save/restore.
- (zvmem.c)
-
- Removes the patch for the uniprint driver, since it is no longer needed.
- (gs_init.ps)
-
- Implements real-number operands in CFF fonts. (gs_cff.ps)
-
- Implements non-default charsets in CFF fonts. (gs_cff.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - The PDF 1.2 "marked content" operators weren't defined.
- (pdf_main.ps)
- - Streams with binary data whose first character was an EOL (\n)
- didn't parse properly. Unfortunately, the way we fixed this may break some
- other files. (pdf_base.ps)
- - PDF 1.2 #nn escape syntax in names wasn't recognized. ****** This
- is implemented with an inefficient hack that should be moved down into C.
- However, I don't want to risk introducing new bugs during the beta test
- period. ****** (pdf_base.ps)
- - The interpreter had a limit of 64K objects. Removing this limit
- required changing a basic data structure -- admittedly a risky thing to do
- during beta test. (pdf_base.ps, pdf_main.ps)
- - TJ didn't multiply the offsets by the font size, causing incorrect
- character positioning. (gs_pdf.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - The ASCIIHexDecode filter read an extra character in case of
- error. (sstring.c)
-
- Adds more tracing output to the CCITTFaxDecode stream. (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - The allocator client name for rendering bitmap patterns was
- incorrect. (Only affects tracing output.) (gspcolor.c)
- - The check for exceeding the overall allocation limit was
- incorrect, because of unsigned arithmetic. (Only affects limitation of
- total allocation, which is only used for debugging and benchmarking.)
- (gsmemory.c)
- - The 0'th component of colored screens wasn't passed through the
- band list, possibly causing access errors when rasterizing. (gxclimag.c,
- gxclread.c)
- - setbbox could get an overflow without detecting it. (gsdps1.c)
- - Images with only one component but MultipleDataSources = true
- could cause a memory access error. (gximage.c)
- - The buffer for unpacking 12-bit-per-sample image data was too
- small, causing memory corruption. (gximage.c)
- - 12-bit-per-sample images with multiple data sources sometimes
- didn't pass correct pointers to image_data. (gsimage.c)
- - If an image data stream reached EOF before supplying enough data
- for the entire image, memory corruption could occur. (zpaint.c)
- - When a device halftone was freed, some pointers in the halftone
- cache weren't cleared, leading to possible dangling references. (gsstate.c)
- - Invalid font parameters could result in partially constructed
- fonts, which caused problems for restore. (gxfont0.h, gsfont.c)
- - If an error occurred within a stringwidth, the graphics state
- stack wasn't restored properly. (gschar.c)
- - The (static) limit on the size of a command line argument was too
- small. (gsargs.h)
- - Building Level 1 systems was no longer possible. (gxdht.h,
- gsht.c, gsht1.c)
- - Truncation instead of rounding caused colors on gray-scale devices
- to come out very slightly too dark. (gxcmap.c)
- - The Decode mapping table constructed for images was slightly
- inaccurate for ranges other than [0 1] or [1 0]. (gximage.c)
-
- Version 4.71(limited) (3/31/97)
- =====================
-
- This is a bug fix release during the beta test period.
-
- Documentation
- -------------
-
- Fixes bugs:
- - A larger value of -Olimit is now needed to optimize gxclread.c.
- (make.txt)
- - Some comments were incorrect. (gdevbbox.h, sfilter1.c)
-
- Updates the GPL with a newer version from FSF. (COPYLEFT)
-
- Notes that the gcc 2.7.x code generation bug is fixed in 2.7.2.1.
- (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some streams required by high-level drivers were incorrectly
- grouped with the interpreter rather than the library. (int.mak, lib.mak)
- - The choice of implementation for file streams was buried in an
- obscure place, rather than being included in the configuration definitions
- at the head of each makefile. (We believe there are no more such buried
- parameters.) This involved a NON-BACKWARD-COMPATIBLE change in the way this
- choice was specified. (lib.mak, *.mak)
- - Some dependencies were missing. (lib.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - A variable was used before being initialized, causing get_bits
- (and raster ops) to fail when using alternate X devices. (bug introduced in
- 4.70.) (gdevxalt.c)
- - Some 'private' declarations were omitted. (It is infuriating that
- gcc doesn't check for this!) (gdevps.c, gdevpx.c)
- - A few character strings were used as byte arrays without a cast.
- (gdevpx.c)
- - The EPS writer didn't write a correct bounding box, and didn't
- write it at the beginning of the file. (gdevvec.h, gsstruct.h, gdevps.c,
- gdevvec.c)
- - x_copy_color specified an incorrect (too large) image width.
- Apparently this only mattered because it could cause invalid memory
- accesses. (gdevx.c)
- - x_copy_mono also specified too large an image width. It's not
- clear this made any difference. (gdevx.c)
- - The default implementation of strip_copy_rop didn't clamp Y values
- to legal values for get_bits. (gdevmrop.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Some initialization files prematurely switched the interpreter
- into Level 2 mode, causing some Level 2 operators not to be defined. (bug
- introduced in 4.60 or later.) (gs_cff.ps, gs_cidfn.ps, gs_cmap.ps,
- gs_init.ps, gs_res.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - The choice of procedure names for the file-descriptor-based
- implementation of file streams was buried in a .c file, rather than being
- chosen in the makefile. (sfile.c[deleted], sfileno.c[deleted], sfxstdio.c,
- sfxfd.c, sfxboth.c)
-
- Library
- -------
-
- Fixes bugs:
- - rcurveto was broken -- it drew curves to random points. (bug
- introduced in 4.61.) (gspath.c)
- - A trailing comma in an enum definition upset some compilers. (bug
- introduced in 4.70.) (gstype1.h)
- - Type 1 fonts with hint replacement could produce anomalous or
- clipped output, or even missing lines. (Also cleans up some out-of-date
- formatting.) (gxtype1.h, gstype1.c, gxhint2.c)
- - Removes some conditionals for choosing between old and new
- algorithms. (gxhint3.c)
- - makebitmappattern required that the bitmap consist of only a
- single tile repetition. (gspcolor.c)
- - Some computations on RasterOps didn't take transparency into
- account properly. (gdevmrop.c)
- - The structure definition for imager and graphics states had an
- incorrect offset for line_params, causing the garbage collector not to mark
- or relocate dash patterns, possibly causing memory faults, FPEs, or invalid
- output. (bug introduced since 4.03.) (gsstate.c)
- - 'show' operators gave a limitcheck for unreasonable coordinates,
- even if limit clamping was enabled. (gschar.c)
-
- Implements banded filling and stroking with colored halftones, in addition
- to pure colors and binary halftones. Since we are in a beta test period,
- actual use of this feature (but *not* all the code implementing it) is
- disabled under an #ifdef FUTURE. (gsdcolor.h, gxcldev.h, gxclpath.h,
- gxdht.h, gxhttype.h, gsht.c, gxclimag.c, gxclpath.c, gxclread.c)
-
- Version 4.70(limited) (3/26/97)
- =====================
-
- This fileset fixes the one outstanding compilation problem on PC platforms
- and the old problem of limitchecks for out-of-bounds coordinates, and adds a
- variety of new features, including the ability to save away the band lists
- for pages and rasterize them later and/or elsewhere in any order and
- combination. This is the first "serious beta" candidate for the next
- general release.
-
- Fileset numbers 4.62 through 4.69 were skipped deliberately.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The list of special -d and -s switches was out of date. (use.txt)
- - The name of the zlibDecode filter was incorrectly written
- zlibEncode. (language.txt)
-
- Documents where to find out how to install gcc 2.7.x on SGI IRIX 6.x.
- (make.txt)
-
- Documents a makefile patch required on NeXTStep. (make.txt)
-
- Documents how to patch gcc to fix the AXP code generation bug. (make.txt)
-
- Adds documentation for the new unified printer driver. (devices.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - 'make distclean' didn't remove a couple of files. (gs.mak)
- - A library module didn't include a necessary dependency. (lib.mak)
- - A new .ps file wasn't installed properly. (unix-end.mak)
- - File write dates weren't updated properly on PC platforms, causing
- unnecessary rebuilding. (cp.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak,
- tccommon.mak, wccommon.mak, zlib.mak)
- - An unnecessary explicit compilation line for gdevcdj.c caused
- problems in the Mac environment. (devs.mak)
- - The VMS scripts were out of sync again. (vms.mak)
- - The VMS build scripts didn't include the new JPEG driver.
- (vms-*.mak)
- - A number of makefile macros were referenced before being defined.
- (devs.mak, lib.mak, int.mak, *.mak)
- - libpng.mak didn't work with PVERSION=90. (libpng.mak, zlib.mak)
-
- Separates install-scripts from install-exec and install-data.
- (unix-end.mak)
-
- Moves the definition of SEARCH_HERE_FIRST from iminst.h to the makefiles.
- (*.mak, iminst.h, iconf.c, imain.c)
-
- Adds a -dBATCH switch that causes Ghostscript to exit after processing the
- files named on the command line. (gs_init.ps)
-
- Adds the PostScript, EPS, and PCL XL writers, and the color and gray-scale
- JPEG drivers, to all Unix configurations. (ansihead.mak, cc-head.mak,
- gcc-head.mak)
-
- Drivers
- -------
-
- NOTE: because of a change in an internal interface (clist_output_page), the
- cp50 driver no longer works. This is a user-contributed driver for which we
- take no responsibility.
-
- Fixes bugs:
- - gdevcdj.c wasn't compatible with ansi2knr. (gdevcdj.c)
- - 'private' was omitted from some declarations. (gdevjpeg.c)
- - The PostScript writer didn't keep track of the current color
- properly. (gdevps.c)
- - RESOLUTION was misspelled in a header. (gdevbjc.h)
- - Some compilers objected to the use of a floating point initial
- resolution value. (gdevbjc.h)
- - Some compilers didn't allow static initialization of a union.
- (gsdcolor.h)
- - If a TIFF driver got an error when initializing the CCITTFax
- encoder, it returned a bogus error code. (gdevtfax.c)
- - The PDF writer produced incorrect output for Indexed color space
- images. (gdevpdfi.c)
- - For many fatal error conditions, the X driver called exit()
- instead of returning an error. (gdevx*.c)
-
- Adds new drivers:
- - epswrite, an EPS-writing driver (instead of making EPS output a
- parametric option of the PostScript-writing device). (devs.mak, gdevps.c)
- - pcxcmyk, a 4-bit CMYK PCX driver. This is probably only useful
- for debugging CMYK color rendering. (gdevpcx.c)
- - jpeggray, a JPEG driver that produces gray-scale rather than color
- output. Thanks to Tom Lane for contributing this. (gdevjpeg.c)
- - uniprint, a unified printer driver for a wide variety of inkjet
- printers. Thanks to Gunther Hess for contributing this. (gdevupd.c)
-
- Adds the resolution (pHYs) to the output of the PNG drivers. (gdevpng.c)
-
- Adds recognition of the ASCII85EncodePages parameter to the PostScript and
- EPS writers. (gdevps.c)
-
- Makes the new JPEG driver write a JFIF header, which contains the image
- resolution. (gdevjpeg.c)
-
- Changes the "vector" device support interface so relative movement can be
- detected easily. THIS IS STILL SUBJECT TO CHANGE WITHOUT NOTICE.
- (gdevvec.h, gdevpsdf.c, gdevps.c, gdevpx.c, gdevvec.c)
-
- Changes the PostScript, EPS, and PDF writers to recognize curves and lines
- that can be represented more efficiently. (gdevpsdf.h, gdevpsdf.c,
- gdevps.c)
-
- Adds a new parameter to the PDF writer, FirstObjectNumber. This defines the
- first object number that will be used in the output. The default, and
- minimum, value is 1; the maximum value is approximately 2^31. This is for
- the benefit of dvipdf; we don't expect it to be used otherwise. In fact,
- using it appears to produce files that Adobe Acrobat Reader won't accept,
- even though the files are perfectly compliant with the published PDF
- specification. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
-
- Platforms
- ---------
-
- Removes the makefile for the 16-bit Borland C++ platform. This was the last
- supported 16-bit platform; we expect to gradually drop all 16-bit
- concessions from the code itself. (bcwin.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The initial size of systemdict was too small, causing the
- interpreter to slow down substantially. (iinit.c)
- - A library module depended on an interpreter module. (zcsindex.c)
- - A logically necessary (but accidentally always available) #include
- was missing. (ifont.h)
-
- Moves set/currentoverprint to a more appropriate module. (zcolor2.c,
- zcssepr.c)
-
- Changes the default transfer functions so that they do something reasonable
- when given operands outside the legal [0..1] range. We only do this to work
- around a bug in FrameMaker output, which uses the transfer function as the
- screen function (!). (gs_init.ps)
-
- Changes the CMap construction algorithm to use the new, more compact
- representation. (zfcmap.c)
-
- Adds support for Adobe's Compact Font Format. Many individual features are
- not implemented yet: see the comment in the source code for details.
- (gs_cff.ps)
-
- Adds support for Type 2 charstrings in Type 1 fonts. (ifont.h, zfont1.c)
-
- Changes the Type 1 character rendering operator for the library change in
- Type 1 fonts. (zchar1.c, zfont1.c)
-
- Initializes the graphics state limit clamp flag to true. (zgstate.c)
-
- Temporarily adds a configuration file for the new unified printer driver,
- and arranges for it to be read at startup. This arrangement will be
- replaced very soon by a different one based on command line parameters.
- (gs_init.ps, uniprint.ps)
-
- Interpreter (PDF)
- -----------------
-
- Adds support for Compact Font Format fonts. (pdf_font.ps)
-
- Streams
- -------
-
- Adds a glue procedure needed for the new jpeggray driver. (sjpeg.h,
- sjpege.c)
-
- Removes the width limit of 32K in the CCITTFaxEncode filter. The new limit
- is absurdly large (about 50M). (scf.h, scfx.h, scfe.c)
-
- Library
- -------
-
- Fixes bugs:
- - A library module depended on an interpreter module. (gxcolor2.h,
- gscolor2.c)
- - When rendering a band, clipping was sometimes used when it wasn't
- necessary. (Performance only.) (gxclread.c)
- - Stroking didn't check the path against the device clipping box in
- the absence of an explicit (non-default) clipping path. (Performance only.)
- (gxstroke.c)
- - A reference to an opaque type upset a couple of compilers.
- (gxclread.c)
- - Negative 32-bit numbers in Type 1 fonts didn't work properly on
- 64-bit systems. (gstype1.c)
- - A logically necessary (but accidentally always available) #include
- was missing. (gxbitmap.h)
- - A header wasn't protected against double inclusion. (gxclist.h)
- - Clipping devices didn't store their actual width and height.
- (gxcpath.c)
- - The slow-case check for thin lines was incorrect. (gxstroke.c)
- - Images didn't compute their clipping boxes correctly if there
- wasn't an explicit clipping path. (This must be a very recent bug, since it
- creates an overflow condition that prevents monochrome images from being
- rendered at all.) (gximage.c)
-
- Moves set/currentoverprint to a more appropriate module. For clients of
- gs_set/currentoverprint, this is a NON-BACKWARD-COMPATIBLE CHANGE, since the
- header file is now separate. (gscolor2.h, gscsepr.h, gscolor2.c, gscsepr.c)
-
- Replace the MetroWerks work-around with a different, more general one.
- (gdevmem.h, gdevmem.c, gxdevice.h)
-
- Speeds up the Type 1 interpreter a little. (gstype1.c, gxhint3.c)
-
- Redesigns the internal representation of CMaps to be more space-efficient.
- (gxfcmap.h, gschar0.c, gsfcmap.c)
-
- Implements a facility for saving away pages and rendering them later.
- Currently this requires the pages to be represented as band lists on files,
- and only allows X translation when rendering. This involves adding the
- following new printer device parameters:
- BandHeight
- BandWidth
- BandBufferSpace
- Also changes the names of the printer device parameter elements from
- use_buffer_space to BufferSpace and from max_bitmap to MaxBitmap for
- consistency. (gdevprn.h, gxcldev.h, gxclio.h, gxclist.h, gxclmem.h,
- gxclpage.h, gxdevmem.h, gdevmem.c, gdevp2up.c, gdevprn.c, gxclmem.c,
- gxclpath.c, gxclread.c)
-
- Changes the band list implementation API to allow closing a file without
- deleting it, and to allow reopening an existing file. This is a
- NON-BACKWARD-COMPATIBLE change to a deep internal interface. (gxclio.h,
- gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
-
- Speeds up rendering of colored halftones, by recognizing cases where one or
- more planes don't actually require screening, unrolling a loop, and doing
- basic clipping before halftoning. (gxcht.c)
-
- Adds a graphics state parameter, gs_set/currentlimitclamp, that changes the
- handling of out-of-range coordinates to clamp them in a way that produces
- approximately the intended output most of the time, rather than causing a
- limitcheck. Currently this is only designed to work with the basic path
- construction operations ([r]moveto, [r]lineto, [r]curveto, closepath); it
- does not work with many other operations such as show, flattenpath or the
- rectangle operations. Note also that while currentpoint will return the
- correct (unclamped) value, reading out the path with pathforall will return
- clamped values. This involves NON-BACKWARD-COMPATIBLE changes to the path
- structure (but not to any public interfaces). (gxpath.h, gxtype1.h,
- gzpath.h, gzstate.h, gspath.c, gspath1.c, gsstate.c, gstype1.c, gxpaint.c,
- gxpath.c, gxpath2.c, gxpcopy.c)
-
- Adds support for Type 2 charstrings. Some features are not implemented yet:
- see gstype2.c for details. (gscrypt1.h, gstype1.h, gxfont1.h, gxop1.h,
- gxtype1.h, gstype1.c, gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
-
- Version 4.61(limited) (3/13/97)
- =====================
-
- This fileset cleans up many compiler warnings. It adds support for
- CMap-encoded fonts, and a driver that writes JPEG images.
-
- Documentation
- -------------
-
- Corrects an error in the description of the internal CodeMap structure.
- (gs_cmap.ps)
-
- Documents the fact that the optimizer in gcc 2.7.2.1 is broken on AXP
- machines. (make.txt)
-
- Corrects the name of the .setglobal/.currentglobal procedures. (zvmem2.c)
-
- Updates current.txt in preparation for the release. (current.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The VMS script was out of date again. (vms.mak)
- - CIDFont support unnecessarily required composite font support.
- (int.mak)
- - CMap and CIDFont support had improper dependencies on
- initialization order. (lib.mak, int.mak)
- - Some dependencies were missing in the JPEG library code.
- (jpeg.mak)
-
- Adds the new JPEG driver to all standard configurations. (*.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - A dependency was omitted from the makefile. (devs.mak, gdevps.c)
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code. (gdevpdfx.h, gdevbj10.c,
- gdevcdj.c, gdevpdfp.c, gdevstc.c)
-
- Adds a JPEG-writing driver. Currently this only produces RGB output and
- only has a QFactor parameter, but eventually it could take all the other
- parameters of the DCTEncode filter. (devs.mak, int.mak, lib.mak,
- gdevjpeg.c)
-
- Refactors the PDF and PostScript output drivers so that both of them
- understand all the relevant documented PDF distiller parameters. (The
- PostScript driver currently disregards nearly all of them.) (gdevpdfx.h,
- gdevpsdf.h, gdevvec.h, gdevpdf*.c, gdevps.c, gdevpsdf.c, gdevpx.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The MetroWerks C compiler gave an inexplicable error on a
- particular initialization. (gdevmem.h, gdevmem.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The insideness testing operators sometimes reported hits
- incorrectly. (zupath.c)
- - Mixed-type arithmetic used floats rather than doubles when
- converting integers, possibly leading to loss of precision. (zarith.c,
- zrelbit.c)
- - composefont was defined in a private dictionary, not in
- systemdict. (gs_cmap.ps)
- - composefont didn't work, for several different reasons.
- (gs_cmap.ps)
- - After a Type 1 font called an OtherSubr, an invalid memory access
- usually occurred, because of an incorrect attempt to free a data structure.
- (zchar1.c)
- - 2 .setlanguagelevel gave an error if globaldict hadn't been
- defined yet. (zmisc2.c)
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code, or failure to check for
- (implausible) out-of-range data. (idict.c, idparam.c, igc.c, iinit.c,
- imain.c, iscan.c, zbseq.c, zchar1.c, zdps1.c)
-
- Adjusts clients for a change in the internal character cache structure and
- the introduction of the font next-glyph procedure. (zfont.c, zfont0.c)
-
- Refactors the Level 1 / Level 2 interpreter split slightly so that composite
- fonts don't require all of Level 2. (int.mak, gs_dps1.ps, gs_dps2.ps)
-
- Adds FMapType 9 (CMap-encoded) composite font support. (int.mak,
- gs_cmap.ps, ifont.h, zfcmap.c, zfont.c, zfont0.c)
-
- Interpreter (PDF)
- -----------------
-
- Adds recognition of /Identity values for BG, UCR, and TR functions in
- ExtGState resources. (General function values still aren't recognized.)
- (pdf_draw.ps)
-
- Centralizes the handling of inherited attributes. (pdf_draw.ps,
- pdf_main.ps)
-
- Starts to add support for Type 0 fonts. (pdf_font.ps, pdf_main.ps)
-
- Streams
- -------
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code. (shc.h, scfd.c, sfilter2.c,
- siscale.c, stream.c)
-
- Library
- -------
-
- Fixes bugs:
- - Some picky compilers disliked certain conditional expressions.
- (gxclread.c)
- - Some picky compilers couldn't handle an extraneous semicolon.
- (gdevvec.h)
- - A cast from byte ** to const byte ** was missing. (gdevvec.c)
- - Resizing the levels array of a halftone order when banding could
- cause invalid memory accesses. (bug introduced in 4.60) (gxclread.c)
- - One picky compiler didn't allow taking the address of an extern
- undefined structure. (lib.mak, gxclread.c)
- - When rendering Type 1 fonts, character overshoot was usually
- suppressed when it shouldn't have been, often producing "squashed"
- characters. (gxhint1.c)
- - On systems where sizeof(long) > sizeof(int), coordinate values of
- more than 22 bits were passed through the band list incorrectly, producing
- incorrect output. (gxclread.c)
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code or (hypothetical) loss of
- precision. (gsdevice.c, gshsb.c, gsht.c, gsstate.c, gstype1.c, gxclimag.c,
- gxclpath.c, gxclread.c, gxpdash.c)
-
- Makes using font hints conditional, for debugging. (gxhint1.c)
-
- Adds library-level support for FMapType 9 (CMap-encoded) composite fonts.
- There is still no support for rearranged fonts. (gsccode.h, gsfcmap.h,
- gsstruct.h, gxfcache.h, gxfcmap.h, gxfont.h, gxfont0.h, gschar.c, gschar0.c,
- gsfcmap.c, gsfont.c, gsfont0.c)
-
- Splits band list control and utilities from rectangle-oriented commands,
- because a file was getting too big. (gxclist.c, gxclrect.c)
-
- Moves the temporary file names for command lists from the printer device
- structure to the command list structure; moves opening and closing the
- temporary files from gdev_prn_alloc/free to clist_open/close. (gdevprn.h,
- gxclist.h, gdevprn.c, gxclist.c, gxclread.c)
-
- Changes the command list storage implementation interface to pass the file
- name to the clist_rewind and clist_fseek functions, for the benefit of OSs
- that require closing and reopening a file to switch between reading and
- writing. This is a NON-BACKWARD-COMPATIBLE change in a non-public
- interface. (gxclio.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
-
- Changes the get_outline procedure in Type 42 fonts to return the length of
- the outline data as well as the pointer. This is a NON-BACKWARD-COMPATIBLE
- change in a semi-public interface. (gxfont42.h, gstype42.c)
-
- Version 4.60(limited) (3/2/97)
- =====================
-
- This fileset moves color rendering up from the graphics state to the imager
- state so that color rendering can happen after banding. It also shifts
- image rendering to the rendering pass of banding for many common cases
- (often referred to inaccurately as "high-level image" capability). The
- changes involved are substantial and in some respects subtle, so
- unfortunately it is quite possible that some new bugs have been introduced.
-
- This fileset also includes improvements to the new PCL XL driver
- (pxlmono/color), and introduces an experimental PostScript driver (pswrite).
-
- Documentation
- -------------
-
- Fixes bugs:
- - The argument list of colorimage was incorrect. (zcolor1.c)
- - false .charboxpath incorrectly claimed to create the correct path
- even when the CTM was not well-behaved. (language.txt)
- - The discussion of the "main program" files was out of date.
- (make.txt)
-
- Updates the OS/2 EMX documentation. (make.txt)
-
- Modifies the Aladdin Ghostscript Free Public License slightly so it may be
- applied to other software packages. (PUBLIC)
-
- Updates inaccurate build documentation for several Unix platforms.
- (make.txt, ansihead.mak, cc-head.mak, gcc-head.mak, libpng.mak)
-
- Notes a problem with the MIPSpro 7.1 compiler. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Most makefiles didn't include version.mak. (msc.mak,
- msvcwint.mak, os2.mak, tctail.mak, wctail.mak)
- - There was an incorrect dependency for the Windows printer device.
- (devs.mak)
-
- Moves the PDF writer to devs.mak. (devs.mak, int.mak)
-
- Updates the main VMS script to be structured like version.mak. (vms.mak)
-
- Drivers
- -------
-
- Factors out the stream-writing procedures from the PDF writer, so they can
- be shared with the new PostScript writer. (gdevpdfs.h => gdevpstr.h,
- gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c => gdevpstr.c,
- gdevpdft.c, gdevpsdf.c)
-
- Adds a PostScript writer (pswrite), similar to the PDF and PCL XL drivers.
- Currently this handles fill/stroke graphics and Level 1 images; everything
- else (including text) is turned into bitmaps. (devs.mak, gdevps.c)
-
- Changes the names of the PCL XL drivers from hpxmono/color to pxlmono/color.
- (devs.mak, gdevpx.c)
-
- Updates the "vector" device support interface. THIS IS STILL SUBJECT TO
- CHANGE WITHOUT NOTICE. (gdevvec.h, gdevpx.c, gdevvec.c)
-
- Makes the vgalib driver a page device. This seems bizarre, but it's
- necessary for setpagedevice to work with it. (gdevvglb.c)
-
- Updates some drivers for the new color mapping interfaces. (gdevpx.c)
-
- Updates the user-contributed Canon LBP-8II and LIPS III driver.
- (gdevlbp8.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The workaround for Ultrix's incorrect implementation of sh -e
- still didn't work. (unixtail.mak)
- - The definition of offset_of didn't work on the Mac. (stdpre.h)
-
- Updates the OS/2 EMX linker command per input from a user. (os2.mak)
-
- Fonts
- -----
-
- Adds .pss (apparently used by Adobe for Multiple Master font instances) to
- the list of extensions skipped by the GS_FONTPATH directory scanner.
- (gs_fonts.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Programs that rebind null, true, and/or false could cause all
- kinds of problems. We've only fixed a couple of the places that might be
- affected (findfont, quit), by wrapping an explicit "systemdict begin/end"
- around the code; fixing this completely would probably require wrapping this
- implicitly around almost every pseudo-operator, which would be too
- expensive. (gs_fonts.ps, gs_lev2.ps)
- - In a Level 2 system, grestoreall stopped one level too early.
- (zdevice2.c)
- - setpagedevice didn't restore the stack properly if it got an
- error. (gs_setpd.ps)
-
- Changes the GC pointer enumeration interface to reduce the number of
- 'discarding const' warnings. See under Library below. (igc.c)
-
- Updates the interpreter for the change in the imager / graphics state split.
- (zpcolor.c)
-
- Makes the stack-restoring behavior of pseudo-operators non-optional.
- (interp.c)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at
- position 45 rather than `hyphen'. (gs_pdf_e.ps, gs_wan_e.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - A header file wasn't protected against double inclusion.
- (stream.h)
- - any_abs was redefined. (spngp.c)
- - The CCITTFaxDecode filter didn't fully initialize the "previous
- line" for 2-D decoding, so if the very first line of data was 2-D, an
- out-of-bounds memory access could occur. (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - gs_image_next could read too much data, causing errors at the
- interpreter level. (gsimage.c)
- - The bitmaps stored in the Pattern cache were usually freed,
- leaving dangling pointers. (gsdcolor.h, gxpcache.h, gxpcolor.h, gsstate.c,
- gxpcmap.c)
- - There was still one assignment to a const structure, and there
- were some unnecessary const-discarding casts. (gxclread.c)
- - If a character in a Type 3 font was defined by executing 'show'
- type commands, charpath did the wrong thing (didn't pick up the paths
- created by the inner show). Similarly, if it uses 'stroke', true charpath
- did the wrong thing (appended the path rather than the strokepath path).
- (gxchar.h, gschar.c, gspaint.c)
- - A header file wasn't protected against double inclusion.
- (gserror.h)
- - The new fast implementation of rectfill didn't handle rectangles
- with negative width/height. (bug introduced in 4.32) (gsdps1.c)
- - Reading banded high-level images calculated the image height
- incorrectly, (usually) causing a rangecheck. (gxclread.c)
- - When reading band data, a memory fault could occur if the halftone
- cache hadn't been allocated yet. (gxht.c)
- - The imager state data for high-level images wasn't written soon
- enough. (gxclimag.c)
- - High-level images computed bounding boxes incorrectly, so they
- could write some garbage data in the band list, and could also fail to write
- some information. (gsmatrix.h, gxmatrix.h, gxclimag.c)
- - High-level images wrote the raster value incorrectly in the band
- list. (gxclimag.c)
- - Images with non-zero initial source X and non-portrait orientation
- were displaced on the page. (In practice, this only applied to some banded
- high-level images.) (gximage.c)
- - The bounding box device didn't forward output_page calls, causing
- pages to be dropped or overprinted. (gdevbbox.c)
- - The band renderer considered all non-zero return codes as errors,
- rather than only negative codes. (gxclread.c)
- - An unnecessary extern hadn't been removed. (gxclimag.c)
- - Some macros didn't parenthesize uses of their arguments, causing
- syntax errors. (gsrefct.h)
- - The screen phase and color_info weren't set correctly when
- rendering bands. (gsstate.h, gsht.c, gxclread.c)
- - A header file didn't declare all the opaque types it used.
- (gsdevice.h)
- - Indexed color spaces didn't work with banded images. (They still
- don't -- the check for writing the color space, and the code for reading the
- table or map, are incomplete.) (gxclist.h, gxclpath.h, gxclimag.c,
- gxclpath.c, gxclread.c)
-
- In preparation for implementing post-banding halftoning:
-
- - Moves color rendering information, including alpha value, from
- graphics state to imager state; also moves the allocator pointer. This is
- quite a subtle change, and may have a significant bug tail. (gxdcolor.h,
- gxht.h, gxistate.h, gzstate.h, gschar.c, gsdps1.c, gspaint.c, gsstate.c,
- gxclread.c)
-
- - Changes all the relevant color space and color mapping procedures
- so they take a const gs_imager_state * (and, in some cases, a [const]
- gx_device *) instead of a const gs_state *. This is a
- non-backward-compatible change, but it only affects internal interfaces.
- (gsdcolor.h, gxcmap.h, gxcspace.h, gxdcconv.h, gxdcolor.h, gxdither.h,
- gxpcolor.h, gzht.h, gschar.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c,
- gscsepr.c, gsdevice.c, gsimage.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcconv.c,
- gxdcolor.c, gxht.c, gximage.c, gximage[2345].c, gxpcmap.c)
-
- - Changes the color and color space reference count adjustment
- procedures similarly, to take a gs_memory_t * instead of a gs_state_t *.
- (gxcspace.h, gscie.c, gscolor.c, gscolor2.c, gscsepr.c, gspcolor.c)
-
- - Changes the gs_halftone in the graphics state from being part of
- the gs_state_contents to being an independent reference-counted object.
- This too may have a significant bug tail. (gxht.h, gxistate.h, gsht.c,
- gsstate.c)
-
- - Changes the image processing code so it no longer assumes that the
- gs_imager_state is actually a gs_state. (gximage.h, gximage.c, gximage2.c,
- gximage3.c, gximage4.c, gximage5.c)
-
- - Adds a unique ID value to device halftones, so that it's possible
- to detect (non-)changes quickly. (gxdht.h, gsht.c)
-
- Finishes the code for writing and reading color rendering information in the
- band list. This involves changes to several band list opcodes. (gsht.h,
- gsht1.h, gxcldev.h, gxclist.h, gxclpath.h, gxdht.h, gzht.h, gsht.c, gsht1.c,
- gxclbits.c, gxclimag.c, gxclist.c, gxclread.c)
-
- Changes the garbage collector pointer enumeration procedure interface
- slightly to reduce the number of 'discarding const' warnings. THIS IS A
- NON-BACKWARD-COMPATIBLE CHANGE for anyone who didn't use the
- ENUM_PTRS_BEGIN[_PROC] macro to start a pointer enumeration procedure (which
- should be no one). (gsstruct.h, gsmemory.c)
-
- Corrects a few more needlessly const-discarding casts. (gxfcache.h,
- gxccache.c)
-
- Checks for file reading errors when rasterizing bands. (gxclread.c)
-
- Version 4.51(limited) (2/9/97)
- =====================
-
- This version contains a more reasonable high-level PCL XL driver. The VMS
- build script is working again, we think.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The gsdll_h macro wasn't defined all the places it was needed.
- (devs.mak, os2.mak)
-
- Drivers
- -------
-
- Continues to develop the "vector" driver infrastructure and the PCL XL
- driver. EVERYTHING IN THESE FILES IS SUBJECT TO CHANGE WITHOUT NOTICE.
- (gdevvec.h, gdevvec.c)
-
- Brings the PCL XL driver up to usable quality for graphics. Most
- fill/stroke graphics, and portrait-orientation bitmap images up to 8 bits
- per pixel, are converted directly to their PCL XL equivalents. Text is
- still treated as bitmaps. Both gray-scale and color output are now
- supported. (devs.mak, gdevpx.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - When using gsos2.exe with gsdll2.dll, reducing the size of the
- page bitmap caused a limitcheck error with the message
- Failed to decommit memory in pm_alloc_bitmap, rc = 87 (gdevpm.c)
- - The scripts that construct gconfig_.h failed on Ultrix, because
- Ultrix's implementation of sh -e is incorrect. (unixtail.mak, ugcclib.mak)
- - Some systems that have sys/times.h don't define CLK_TCK, making a
- compilation fail. (time_.h)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - An omitted semicolon wasn't detected by gcc. (idict.c)
-
- Removes a source of unnecessary duplication by getting the revision number
- and date from version.mak. (gs.mak, int.mak, version.mak, gscdef.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The minimum buffer sizes for the RunLengthDecode filter hadn't
- been changed to reflect the algorithm improvement made in release 4.38.
- (srld.c)
-
- Changes the RunLengthEncode filter so it can make progress with only a
- 2-byte output buffer. (srlx.h, srle.c)
-
- Library
- -------
-
- Fixes bugs:
- - Because of a typo, the slow general algorithm was always used for
- monochrome images. (Performance bug only, but a serious one.) (gximage2.c)
- - Dots (zero-length lines with round caps and zero dot length)
- caused an infinite loop. (bug introduced in 4.40) (gxstroke.c)
- - Some image data unpacking procedures were always required, but
- weren't always included. (bug introduced in 4.50) (gximage.c, gximage0.c,
- gximage3.c)
- - Images with 8 bits per pixel and non-identity Decode produced
- garbage. (bug introduced later than 4.03) (gximage0.c)
- - Some necessary casts and omitted punctuation weren't detected by
- gcc. (gxpath.h, gsargs.c, gsstate.c, gxclread.c, gxpdash.c)
- - The band list became confused if a band had no commands at all.
- (gxclread.c)
- - If a path included a closepath followed by a moveto to the same
- point, it could be written incorrectly in the band list. (bug probably
- introduced in 3.60) (gxclpath.c)
-
- Changes some internal computations for arcs from float to double for greater
- accuracy. (gspath1.c)
-
- Version 4.50(limited) (1/31/97)
- =====================
-
- This release contains an experimental high-level PCL XL driver, a little
- more support for CID/CMap fonts, and the usual bug fixes. NOTE: the VMS
- build script is known to be out of sync with the makefiles again; we still
- don't see any alternative to constant struggles with this problem.
-
- Documentation
- -------------
-
- Corrects the -h message, which gave an incorrect file name for the bug
- report form. (imainarg.c)
-
- Removes documentation for 16-bit MS-DOS platforms with the Borland compiler.
- (fonts.txt, make.txt, new-user.txt, use.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Watcom library makefile didn't define the directory
- information for libpng and zlib. (watclib.mak)
-
- Moves the selection of band list implementation (file- vs. RAM-based) and
- the compression filter for RAM-based band lists up to the top-level
- makefiles. Again, this is a NON-BACKWARD-COMPATIBLE procedure change.
- (lib.mak, *.mak)
-
- Moves the selection of version number for all platforms (except VMS, as
- usual) to a separate file. This will reduce the number of files that need
- editing when the version number changes. (ansihead.mak, cc-head.mak,
- gcc-head.mak, ugcclib.mak, version.mak, tar_cat)
-
- Drivers
- -------
-
- Fixes bugs:
- - An error in the (unsupported) SGI RGB driver could cause crashes
- or incorrect output. (gdevsgi.c)
-
- Starts to create a framework for structured output ("vector") drivers (PDF,
- PostScript, PCL XL, etc.) (gdevbbox.h, gdevvec.h, gsdcolor.h, gsstruct.h,
- gxdevice.h, gdevvec.c)
-
- Moves default page size parameters to a more accessible header. (gdevprn.h,
- gxdevice.h, gdevx.c)
-
- Adds a driver that produces properly structured PCL XL output. This is
- highly experimental and not ready for use yet. (gdevpx.c)
-
- Platforms
- ---------
-
- Removes support for 16-bit MS-DOS platforms with the Borland compiler. For
- the moment, 16-bit MS Windows is still supported. (bc.mak, bcflags.mak,
- bclib.mak, tc.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - File-based CIDFonts (with delayed, incremental loading of
- character outlines) didn't work. (gs_cidfn.ps)
-
- Finishes implementing the definition of CMap resources, except for
- rearranged fonts. (gs_cidfn.ps, gs_cmap.ps)
-
- Adds a little more CMap support code. (zcid.c)
-
- Removes the .setcurrentfile operator, since it doesn't solve the problem it
- was intended to address. (zcontrol.c)
-
- Adapts the interpreter to use the new argument processing code.
- (imainarg.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The CCITTFaxDecode filter could access as much as 3 bytes beyond
- the end of a buffer, causing an invalid memory access. (This is essentially
- the same bug that was fixed for the CCITTFaxEncode filter in 4.38.)
- (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - Painting an image without having set up any halftone could cause a
- crash. (gxht.c)
- - In a very obscure case, an occasional scan line of landscape
- images could get corrupted. (gximage0.c)
- - Because of a rounding error, patterns could fail to be painted in
- certain cases. (gxpcolor.h, gspcolor.c, gxpcmap.c)
- - Very large line widths or miter limits could cause the computation
- of stroke expansion to overflow. (gxpaint.h, gdevbbox.c, gxclpath.c,
- gxstroke.c)
- - The phase could be incorrect for simple patterns. (gspcolor.c)
- - The default implementation of copy_mono used an incorrect
- RasterOp. (gdevdflt.c)
- - The default implementation of fill_masked didn't increment the row
- pointer, causing characters to appear as solid rectangular blocks.
- (gxdcolor.c)
-
- Eliminates an unnecessary gsave and grestore from rectfill and rectstroke if
- the path was null. (gsdps1.c)
-
- Adds a limit on the amount of space that the default (C heap) allocator will
- allocate, and a record of the maximum amount allocated, to help testing
- embedded products. (gsmemory.c)
-
- Changes the band list algorithm for deciding how many replicas of a halftone
- tile to store in the tile cache. The previous algorithm was too liberal,
- which could cause the cache to overflow and many unnecessary bitmaps to be
- written in the band list. (gxclbits.c)
-
- Writes clipping with a rectangle more compactly in the band list.
- (gxfixed.h, gxclpath.c)
-
- Adds new band list commands for representing 90- and 180-degree arcs
- compactly. (gxclpath.h, gxclpath.c, gxclread.c)
-
- Repackages handling of general monochrome images, color images, and 12-bit
- and interpolated images, so that they are included optionally rather than in
- all configurations. (int.mak, lib.mak, gximage.h, gximage.c,
- gximage[12345].c)
-
- Changes the structure definition for devices to include no-op pointer
- enumeration and relocation, so they can have subclasses. (gxdevice.h)
-
- Adds a library facility for processing command line arguments with
- @-expansion. (gsargs.h, gsargs.c)
-
- Version 4.41(private) (1/21/97)
- =====================
-
- This release adds a PCL XL output driver, and a few performance
- improvements.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The zlib library used an incorrect header file when compiling.
- (zlib.mak)
-
- Changes the names of the preprocessor symbols indicating the presence of
- system header files to be consistent with the ones used by GNU configure.
- (dvx-tail.mak, ugcclib.mak, unixtail.mak, vms.mak; dirent_.h, time_.h;
- gp_unix.c)
-
- Changes the method for choosing the compression filter for RAM-based band
- lists. This is a NON-BACKWARD-COMPATIBLE change in the makefile. (lib.mak)
-
- Drivers
- -------
-
- Adds black-and-white and 8-bit gray PCL XL (PCL 6) drivers for the LaserJet
- 5 and 6 family. This driver is extremely simple and just emits bitmaps;
- future drivers will use more PCL XL high-level constructs. (gdevlj56.c)
-
- Fonts
- -----
-
- Updates the free font distribution to add the URW Grotesk and Antiqua fonts.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - gs -h and -v returned with a non-zero exit code on all platforms.
- (This is necessary under Windows, to keep the message visible on the screen,
- but nowhere else.) (imainarg.c)
- - Resizing a dictionary could exceed dict_max_size, causing memory
- corruption. (dstack.h, idict.h, idict.c, zdict.c)
-
- Adds .setlinecap and .setlinejoin that can use the extended range of line
- cap/join values, and redefines setlinecap and setlinejoin in terms of them.
- (gs_init.ps, zgstate.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The CCITTFaxDecode filter with EncodedByteAlign = true skipped to
- a byte boundary before checking for an EOL. This may be wrong if EndOfLine
- = true; we aren't at all sure what should happen if EndOfLine = false.
- (scfd.c)
-
- Adds a "no wrapper" option to the zlib streams, to optionally suppress the
- time-consuming integrity checksum computation. (szlibx.h, szlibc.c,
- szlibd.c, szlibe.c)
-
- Library
- -------
-
- Fixes bugs:
- - Dashed lines with zero-length drawn segments (dots) that fell
- exactly on a corner produced inappropriate output. (pcl/test19.pxs)
- (gxpdash.c, gxstroke.c)
- - Dashed lines didn't set the segment notes properly. (gxpdash.c)
- - The bounding box device didn't free a bookkeeping structure at the
- end of processing an image. (gdevbbox.c)
- - Curve points could get computed incorrectly when using emulated
- floating point. (gxpcopy.c)
- - The 1-element cache for curve_x_at_y didn't work if Y was
- decreasing. (gxfixed.h, gxpcopy.c)
-
- Distinguishes between error and informational exits. (stdpre.h)
-
- Defines and checks maximum values for line cap and join parameters.
- (gslparam.h, gsline.c)
-
- Removes the 'not last' segment note, since it is not used for anything.
- (gxpath.h, gspath1.c, gxpath2.c, gxpcopy.c, gxpflat.c, gxstroke.c)
-
- Changes the memory freeing algorithm for RAM-based band lists back to the
- original one, since the "improved" one had more bugs than it was worth
- chasing. (gxclmem.c)
-
- Speeds up the A * B / C algorithm a little. (gsmisc.c)
-
- Speeds up curve_x_at_y by recognizing more cases that don't require the slow
- A * B / C algorithm. (gxpcopy.c)
-
- Changes the path filling code so it uses fill-by-trapezoids even if
- fill_adjust is zero, as long as the flatness is at least 1 pixel.
- (gxfill.c)
-
- Removes the (unneeded) floating point operations from gx_curve_log2_samples.
- (gxpflat.c)
-
- Changes the memory-based implementation of band lists so that it constructs
- the compressor and decompressor by calling procedures rather than
- instantiating templates: this allows setting filter parameters to
- non-default values. (gxclmem.h, gxcllzw.c, gxclmem.c, gxclzlib.c)
-
- Version 4.40(private) (1/13/97)
- =====================
-
- This version finally handles the last graphics model discrepancies between
- PostScript and PCL, by correctly implementing null joins, minimum dot
- lengths, and tangent-aligned curve ends. It also contains some significant
- performance improvements, and as usual a few bug fixes.
-
- Documentation
- -------------
-
- Documents the new accurate curves and path dashing operators.
- (language.txt)
-
- Utilities
- ---------
-
- Adds switches for genconf to set and unset a prefix for file names.
- (genconf.c)
-
- Drivers
- -------
-
- Adds recognition of the new Distiller 3.0 parameters to the PDF writer.
- (None of them have any effect yet.) (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c,
- gdevpdfp.c)
-
- Converts all the output functions in the PDF writer from being file-based to
- using streams, in anticipation of adding compression. (gdevpdfs.h,
- gdevpdfx.h, gdevpdf*.c, gdevpdfs.c)
-
- Interpreter
- -----------
-
- Adds operators for accessing the new accurate curves flag in the graphics
- state. (zgstate.c)
-
- Adds an operator for invoking gs_dashpath. (zpath1.c)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Indexed color spaces whose base space was a CIE space caused an
- error. (pdf_draw.ps)
-
- Library
- -------
-
- Fixes bugs:
- - A pointer was declared const incorrectly. (gxcpath.c)
- - Filling with a pattern often failed to pass a non-null bitmap ID,
- causing excessive writing in the band list. (Performance bug only.)
- (gspcolor.c)
- - The bounding box device didn't discount copy_mono or draw_line
- operations drawing in white. (gdevbbox.c)
- - The bounding box device didn't read out the bounding box correctly
- as the PageBoundingBox device parameter. (It did return it correctly
- through the gx_device_bbox_bbox procedure.) (gdevbbox.c)
- - The default implementation of fill_triangle drew nothing or
- incorrect output if the corners of the triangle were specified in certain
- orders (ax < 0 or bx < 0) (i.e., the previous "fix" had a bug).
- (gdevddrw.c)
-
- Changes tile size from always being set in all bands to being 'known' by
- bands individually. (gxclist.h, gxcldev.h, gxclbits.c, gxclist.c)
-
- Computes an additional value in advance when rendering images. (gximage.h,
- gximage1.c, gximage2.c)
-
- Replaces some slow loops with calls of memmove. (gxclmem.c)
-
- Provides a fixed-point implementation of A * B / C for machines with slow
- floating point. (gxfixed.h, gsmisc.c)
-
- Extends the "device color" type to implement filling masked regions as well
- as rectangles. (gxdcolor.h, gdevdflt.c, gspcolor.c, gxcht.c, gxdcolor.c,
- gxht.c)
-
- Makes unclipped monobit portrait and landscape images and image masks use
- the new masked fill capability of device colors. (gximage.h, gximage.c,
- gximage1.c, gximage2.c)
-
- Adds a macro for determining pointer alignment. (stdpre.h, gdevdflt.c)
-
- When floating point is slow, uses a different, faster algorithm for
- gx_curve_x_at_y. (gxpcopy.c)
-
- Improves performance by adding a one-element cache for gx_curve_x_at_y.
- (gzpath.h, gxpcopy.c)
-
- Reduces overhead when banded images are pre-rasterized (currently, always).
- (gxclimag.c)
-
- Adds a rendering cost estimate field to each band in a band list. This
- field isn't actually used for anything yet; eventually, the intent is that
- bands with a high cost will get rendered, and stored in compressed form,
- before starting the engine. (gxclist.h)
-
- Adds the concept of 'notes' for path segments, to allow remember what
- segments constitute a single curve or arc. Currently we set these properly
- for everything except dashed paths. (gxclpath.h, gxpath.h, gzpath.h,
- gspath1.c, gxclpath.c, gxclread.c, gxpath.c, gxpath2.c, gxpcopy.c)
-
- When the dot length is non-zero, changes curve stroking to always use bevel
- joins within each curve rather than the current join. This prevents a
- "bristly" look with no join and butt caps. (gxstroke.c)
-
- Adds an "accurate curves" capability that makes the last line segment of a
- flattened curve actually be tangent to the curve, which in turn makes
- flat-end caps be correctly perpendicular to the tangent. (gxpath.h,
- gxpcopy.c)
-
- Adds an "accurate curves" flag in the graphics state. (gsline.h,
- gxclpath.h, gxistate.h, gsline.c, gspath.c, gspath1.c, gxclpath.c,
- gxclread.c, gxfill.c, gxstroke.c)
-
- Changes the meaning of "no join" (gs_join_none) so that instead of producing
- no join and butt caps, it produces whatever the current cap is. This is
- compatible with the H-P definition. (gxstroke.c)
-
- Implements non-zero dot length for dash patterns. (gxpdash.c)
-
- Splits off the curve flattening algorithms into a separate file.
- (gxpcopy.c, gxpflat.c)
-
- Version 4.39(limited) (1/1/97)
- =====================
-
- This version was created only to accompany a release of the PCL XL
- interpreter. It was withdrawn the day after it was released, because the
- tools used to produce it put the wrong files in the filesets.
-
- Documentation
- -------------
-
- Adds a more detailed description of the third-party ps_view viewer
- interface. (new-user.txt)
-
- Corrects an error in a reference to the PSLRM. (lib.txt)
-
- Documents the change in .makeoperator. (language.txt)
-
- Updates the FTP location of the zlib sources. (zlib.mak)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Unix library makefile didn't include the necessary definitions
- for libpng and zlib. (ugcclib.mak)
-
- Allows selecting the compression filters for memory-based band lists in the
- makefile. Makes zlib (deflate) the default compressor for memory-based band
- lists. (lib.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - prfont.ps wouldn't print unencoded characters in Type 42 fonts.
- (prfont.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - The H-P monochrome driver didn't put out enough initialization
- commands at the beginning of each page to make each page printable
- independently. (gdevdjet.c)
-
- Interpreter
- -----------
-
- Changes ref_stack_count_inline so it never does a procedure call.
- (istack.h)
-
- Changes .makeoperator so that operator procedures save the stack depths, and
- restore the stack pointers (if possible) if the operator encounters an
- error. This is a NON-BACKWARD-COMPATIBLE CHANGE; it requires rewriting the
- 'stop' and 'stopped' pseudo-operators (and, if there were any, any other
- pseudo-operators that interact with the error handling machinery) in C.
- (gs_init.ps, interp.c, zcontrol.c)
-
- Adds recognition of the LeadingEdge, MediaClass, and RollFedMedia keys in a
- page device dictionary, per the Adobe supplement for their version 2017
- interpreter. This involves a NON-BACKWARD-COMPATIBLE change to the
- (undocumented) .matchpagesize operator. (gs_setpd.ps, zmedia2.c)
-
- Makes necessary changes for compatibility with the added parameters for the
- zlib filters. (zfzlib.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The zlib encoder returned EOFC when it should have returned 0.
- (szlibe.c)
-
- Adds optional parameters and reset procedures for the zlib filters.
- (szlibx.h, szlibc.c, szlibd.c, szlibe.c)
-
- Library
- -------
-
- Fixes bugs:
- - Displaying characters with a non-standard RasterOp could cause an
- invalid memory access. (gdevdflt.c)
- - Banding sometimes used an incorrect RasterOp. (gxclread.c)
- - When banding, mixing Patterns and halftones could confuse the
- bookkeeping of tile size, leading to incorrect generation of the band list
- and error messages or confusion when rasterizing. (gxclist.h, gxclbits.c,
- gxclread.c)
- - If only the dash pattern offset changed, and not any of the other
- dash-related parameters, the new offset wasn't written in the band list,
- causing incorrect output. (gxclpath.c)
- - Oversized halftone tiles didn't report their error code properly.
- (gxclbits.c)
- - Oversized halftone tiles with RasterOp caused an error.
- (gxclist.c)
- - When banding, RasterOp transfers that crossed a band boundary
- didn't access the correct source data on bands other than the first.
- (gxclist.c)
- - There were redundant copies of the code for writing a RasterOp
- value in the band list. (gxclimag.c, gxclpath.c)
- - Oversized patterns or halftones produced garbled output.
- (gxclbits.c)
- - The check for oversized patterns or halftones was slightly
- incorrect, leading to the possibility of writing out a tile that would
- overflow the reading buffer and corrupt memory. (gxclbits.c)
- - When banding, RasterOp wasn't applied to fill and stroke
- operations, and wasn't applied correctly to characters. (gdevdflt.c,
- gxclimag.c, gxclread.c)
- - The RasterOp-related optimizations for black-and-white images
- sometimes produced incorrect output. (gximage.c, gximage2.c)
- - The default implementation of fill_triangle didn't draw anything
- if the corners of the triangle were specified in certain orders (ax < 0 or
- bx < 0). (gdevddrw.c)
- - Painting with a Pattern could pass out-of-range phase values to
- driver procedures. (gspcolor.c)
- - Because of an off-by-1 error, halftones or patterns passed through
- the band list could write past the end of their allocated space in the band
- tile cache, leading to incorrect output or possible arithmetic exceptions or
- memory access errors. (gsbitops.c)
-
- Adds -Z: for printing only the minimal command list statistics. (gxclist.c,
- gxclread.c)
-
- Expands band list tracing so it includes all of the data associated with the
- command, not just the command name and a few command parameters.
- (gxclread.c)
-
- Adds free lists for strings. Currently these are only used in
- non-garbage-collected environments. (gxalloc.h, gsalloc.c, gsnogc.c)
-
- Adds a procedure for copying a path structure, and an (internal) accessor
- for the current path in the graphics state. (gxpath.h, gspath.c, gxpath.c)
-
- Speeds up filling characters with halftones a little bit. (gdevdflt.c)
-
- Changes the memory-based implementation of band lists so it can use any
- compression / decompression filter, so it only compresses when it has
- allocated a specified amount of buffer storage, and so it releases its
- buffer storage at the end of each page. (gxclmem.h, gxclmem.c)
-
- Speeds up counting the number of 1-bits in a byte, which is used in some
- image processing algorithms. (gsbittab.h, gsbittab.c)
-
- Reduces the band list space required for changing tile size. (gxcldev.h,
- gxclbits.c, gxclread.c)
-
- Version 4.38(limited) (12/20/96)
- =====================
-
- Adds support for a couple of undocumented features in Type 1 fonts.
-
- Interpreter
- -----------
-
- Adds handling of the Type 1 font subroutineNumberBias (an optional entry in
- the Private dictionary) and lenIV = -1 features at the interpreter level.
- (zchar1.c, zfont1.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The CCITTFaxEncode filter could access as much as 3 bytes beyond
- the end of a buffer, causing an invalid memory access. (scfe.c)
-
- Changes the RunLengthDecode filter so it can make progress (produce output)
- with only a 1-byte output buffer. (srlx.h, srld.c)
-
- Library
- -------
-
- Fixes bugs:
- - The sine and cosine of multiples of 90 degrees weren't exact.
- (gxfarith.h, gsmisc.c)
- - The expanded bounding box computation for strokes didn't take into
- account the possibility of overflow. (gxstroke.c)
- - The allocator didn't fill freed strings with the 'free' mark.
- (gsalloc.c)
- - When using a pattern with RasterOp, the phase was computed
- incorrectly, leading to anomalous filling patterns. (gspcolor.c)
- - Patterns with a non-zero translation in the matrix passed to
- makepattern didn't translate the pattern origin properly. (gxcolor2.h,
- gxpcolor.h, gspcolor.c)
-
- Adds a subroutineNumberBias field to Type 1 fonts. This is an undocumented
- feature of the Type 1 font format. (gxfont1.h, gstype1.c)
-
- Interprets lenIV = -1 in Type 1 fonts as meaning that the CharStrings are
- unencrypted. This too is an undocumented feature of the Type 1 format.
- (gxfont1.h, gxtype1.h, gstype1.c, gstype2.c)
-
- Changes gs_clippath so it returns more reasonable outlines. (There are too
- many programs that rely on being able to stroke the result of clippath, even
- though both the Adobe and H-P literature specifically say the results are
- unpredictable.) (gxcpath.h, gxcpath.c)
-
- Version 4.37(limited) (12/10/96)
- =====================
-
- This version implements separate halftone phase for source and texture,
- required for PCL XL implementation.
-
- Fonts
- -----
-
- Fixes bugs:
- - Loading a native TrueType font without a 'post' table caused an
- error. (gs_ttf.ps)
-
- Interpreter
- -----------
-
- Extends the interpreter to handle the new separate halftone phases for the
- RasterOp source and texture. (gs_dps1.ps, zdps1.c)
-
- Makes a small change to accommodate a library change supporting Type 2
- charstrings. (zfont1.c)
-
- Interpreter (PDF)
- -----------------
-
- Implements the FontFile2 key for embedded TrueType fonts. (pdf_font.ps)
-
- Starts to implement the FontFile3 key for compressed Type 1 fonts. This
- code is currently disabled, because none of the necessary underlying C is
- written yet. (pdf_font.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The floating point emulator often returned incorrect results (too
- many bugs to list). (This is not used in any standard configuration.)
- (gsfemu.c)
- - The new copy_for procedure for gstates incorrectly declared an
- argument as const. (gxstate.h, gsstate.c)
- - If a curve had to be split twice along the same axis to make it
- monotonic, the split points could still be returned in the wrong order,
- possibly causing curved edges to turn into straight lines, and the algorithm
- still produced the wrong results if the curve had to be split twice along a
- single axis. This is the second time we have "fixed" these problems and the
- 4th time we have "fixed" the curve monotonizing algorithm. (gxpcopy.c)
- - Setting halftones cause a memory leak, because the subsidiary
- objects of the device halftone weren't freed properly. Fixing this required
- changing the graphics state implementation from allocating a device halftone
- for each gstate to managing the device halftone with reference counting.
- (gxdht.h, gzstate.h, gsht.c, gsstate.c)
-
- Provides an optimized version of ldexp for FPU-less configurations, and
- changes one key algorithm to use it. (gxfixed.h, gsmisc.c, gxpcopy.c)
-
- Speeds up imagemask with a halftone a little. (This will eventually require
- more serious optimization.) (gximage2.c)
-
- Adds a -Z* switch for tracing varieties of image rendering. (gximage.c)
-
- Recognizes that if the logical operation is equivalent to D = S (after
- accounting for a constant texture, if any), or if it is equivalent to D = ~S
- or D = D {&,|}{S,~S} and D and S are both monobit and both colors are pure,
- imaging with RasterOp can be executed without invoking RasterOp. (gsropt.h,
- gximage.c)
-
- Makes coordinate transformations with landscape matrices execute as fast as
- with portrait matrices. (gxmatrix.h, gscoord.c, gsmatrix.c)
-
- Adds some sketch code for interpreting Type 2 charstrings. It compiles, but
- it makes no pretense of being runnable. (gstype1.h, gxop1.h, gxtype1.h,
- gstype2.h, gxfont1.h, gstype1.c, gstype2.c)
-
- Extends the library to allow setting separate halftone phases for the
- RasterOp source and texture, which is needed to implement halftone screens
- that behave like those in H-P's PCL XL printers. (gscsel.h, gsstate.h,
- gxcmap.h, gxcspace.h, gxdcolor.h, gxdither.h, gxpcolor.h, gzht.h, gzstate.h,
- gscie.c, gscsepr.c, gsht.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcolor.c,
- gxht.c, gximage.c, gximage[2345].c, gspcmap.c) ****** STILL NEED TO UPDATE
- BANDING CODE, grep FOR phase ******
-
- Removes the rc_header member from the gs_halftone structure, since we don't
- need it after all. (gxht.h)
-
- Version 4.36(limited) (12/3/96)
- =====================
-
- This version fixes a number of library bugs related to RasterOp, Patterns,
- and memory management.
-
- Documentation
- -------------
-
- Changes the definition of texture transparency to match the peculiar H-P
- specification. (drivers.txt, language.txt)
-
- Drivers
- -------
-
- Fixes bugs:
- - x_get_bits didn't flush updates to the frame buffer, leading to
- possibly incorrect data being returned. (gdevx.c)
- - x_get_bits added padding to the scan line being copied, possibly
- corrupting memory. (gdevx.c)
-
- Changes the x11mono driver to define white = 0, black = 1 to more closely
- model black-and-white printers. (This is an internal change that doesn't
- affect the output.) (gdevxalt.c)
-
- Interpreter
- -----------
-
- Removes some code that is no longer needed, by virtue of the fix for the
- memory leak in Pattern remapping. (zpcolor.c)
-
- Library
- -------
-
- Fixes bugs:
- - Patterns wider than 1024 bits caused a rangecheck. (gxclip2.h,
- gxclip2.c)
- - Dash patterns never got freed. The fix for this slows down gsave
- and grestore slightly, but we don't see any way around it. (gsline.c,
- gsstate.c)
- - If the CTM was very non-uniform in X and Y, stroke sometimes
- didn't recognize thin lines as being thin, leading to dropouts.
- (gxstroke.c)
- - RasterOps that didn't use S or T still took S or T transparency
- into account. (gdevmrop.c)
- - RasterOps with no source didn't handle the possibility that the
- device color for black might have a value other than 0. (gxdcolor.h,
- gspcolor.c, gxcht.c, gxdcolor.c, gxht.c)
- - White pixels in halftones on black-and-white devices apparently
- are *not* supposed to be treated as opaque for RasterOp. (gxcht.c, gxht.c)
- - clippath caused memory to be lost until a restore or a garbage
- collection. (gspath.c)
- - Clipping lists weren't ever freed, and clipping paths sometimes
- weren't freed, causing memory to be lost until a restore or a garbage
- collection. (gzacpath.h, gxacpath.c, gxcpath.c)
- - Freeing a pattern instance referenced a pointer after it had been
- freed, causing an invalid memory access. (gspcolor.c)
- - Remapping a Pattern color lost track of the temporary gstate,
- memory devices, and possibly the mask, causing memory to be lost until a
- restore or GC. (gxpcolor.h, gxpcmap.c)
- - Remapping a Pattern color could cause paths to be marked as
- shared, preventing them from being freed until a restore or GC. (gxpcmap.c)
-
- Enhances the non-tracing garbage collector so that if there are no strings
- allocated at all, it resets the string allocation pointers. (gsnogc.c)
-
- Optimizes the black-and-white RasterOp implementation by recognizing cases
- that can be implemented directly by fill_rectangle, copy_mono, or
- tile_rectangle. (gdevmrop.h, gsropt.h, gdevmrop.c, gsroptab.c)
-
- Changes -ZA so it no longer produces [P] tracing messages for path
- construction. (gxpath.c)
-
- Adds a gx_pattern_cache_winnow procedure for selectively removing entries
- from the Pattern cache, similar to gx_purge_selected_cached_chars.
- (gscolor2.h, gxpcolor.h, gxpcmap.c)
-
- Adds the Pattern UID to Pattern cache entries. (gxpcolor.h, gxpcmap.c)
- ****** MUST HANDLE XUID POINTERS ON GC (RELOC) & RESTORE (CLEAR LIKE HT
- CACHE) ******
-
- Makes gs_gstate free the path representation of the clipping path if it's a
- rectangle, since reconstructing it is cheap and otherwise the path segments
- would not be freeable until a restore or GC. (gsstate.c)
-
- Extends the "client data" interface for gstates so that the copy procedure
- can determine why it is being called. (gxstate.h, gsstate.c)
-
- Version 4.35(limited) (11/24/96)
- =====================
-
- This contains the usual bug fixes, and two minor enhancements: an option for
- handling EPSF files with binary headers, and support for file-based
- resources.
-
- Documentation
- -------------
-
- Documents the new EPSF-reading capability. (gs.mak)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some obsolete definitions were accidentally left in the rules for
- compiling fonts into the executable. (int.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - initgraphics left the current color space in an inconsistent
- state. (bug introduced in 4.32) (zgstate.c)
- - restore didn't properly rebind FontDirectory to either Local or
- SharedFontDirectory according to the current VM selection. (gs_dps1.ps)
- - If FontDirectory was redefined, many things broke. (gs_ccfnt.ps,
- gs_dps1.ps, gs_fonts.ps, gs_pdfwr.ps)
- - If a resource provided a file name but the file couldn't be
- opened, an error occurred. (gs_res.ps)
- - flushfile didn't work with procedure-based streams. (zfileio.c)
-
- Adds a feature (epsf.dev) that allows the interpreter to recognize and
- handle MS-DOS EPSF files with a binary header. (int.mak, gs_epsf.ps,
- gs_init.ps, pdf_main.ps)
-
- Adds (internal) .getuserparam and .getsystemparam operators for getting the
- value of a single user or system parameter. (gs_lev2.ps, zusparam.c)
-
- To support file-based resources, implements the FontResourceDir,
- GenericResourceDir, and GenericResourcePathSep system parameters, and
- ResourceFileName for the built-in resource categories. (gs_init.ps,
- gs_lev2.ps, gs_res.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - The 2-D CCITTFaxDecode filter became confused if a buffer boundary
- fell between a horizontal make-up code and its terminating code, typically
- causing an ioerror. (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - Using the null color could confuse the reference counts for color
- spaces, causing memory access errors. (gscolor.c)
- - Images with CombineWithColor = true caused memory access error,
- because a structure element wasn't initialized. (gdevmrop.c)
- - gs_setnullcolor tried to return an error code, even though it was
- declared as returning void. (Why doesn't gcc catch this??) (gscolor.h,
- gscolor.c)
- - gs_setnullcolor was declared inconsistently as taking a const or
- non-const argument. (gscolor.h)
- - Small color tiles in the band list were not read in correctly.
- (gxclread.c)
- - The band list could get confused, causing ioerrors, invalid memory
- accesses, or garbled output, because the algorithms for computing the size
- of bitmaps when writing and when reading had gotten inconsistent. This code
- has been broken and "fixed" at least 4 or 5 times. (gxcldev.h, gxclbits.c,
- gxclread.c)
- - When using banding, characters that extended off the page
- vertically in the -Y direction came out garbled. (gxclimag.c)
- - The bounding box device didn't compute the box correctly for
- trapezoids. (gdevbbox.c)
- - The fastest case of rendering monochrome images could cause
- unaligned data accesses. (bug introduced recently.) (gximage.h,
- gximage1.c)
- - TrueType characters with no contours could cause an invalid memory
- access. (gstype42.c)
- - Composite TrueType characters weren't rendered properly.
- (gstype42.c)
-
- Adds a get_outline procedure to the Type 42 font header, to provide a
- callback for getting the outline data for a glyph. (gxfont42.h, gstype42.c)
-
- Version 4.34(limited) (11/18/96)
- =====================
-
- This release adds a little more support for CID-keyed fonts and for PCL
- emulation, and a bit more of the machinery for passing images through the
- band list.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The RasterOp source device wasn't listed as an internal device in
- drivers.txt. (drivers.txt)
-
- Corrects a statement regarding the pstotext license. (new-user.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Watcom makefile for the library didn't work properly if
- certain variables were overridden from the command line. (watclib.mak)
- - The library code inadvertently depended on an interpreter header
- file. (*.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - Some very picky compilers complained about assigning 0 to a
- variable of an enum type. (gdevpdfx.h, gdevpdf.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Some very picky compilers didn't like a cast from a pointer type
- to an int type. (idebug.c)
- - Some very picky (and non-ANSI-compliant) compilers didn't allow
- assigning an int to a variable of enumerated type. (zfont2.c, zht2.c)
- - The library code inadvertently depended on an interpreter header
- file. (iref.h)
-
- Restructures the font building code slightly to support CID fonts better.
- (gs_cidfn.ps, bfont.h, zcid.c, zfont0.c, zfont1.c, zfont2.c, zfont42.c)
-
- Adds a .setcurrentfile operator to allow disk-based fonts to keep their file
- open. (gs_cidfn.ps, zcontrol.c)
-
- Streams
- -------
-
- Fixes bugs:
- - Some very picky compilers didn't like the computation (const byte
- *)0 - 1. (stream.c)
- - A cast to ulong was omitted. (smtf.c)
- - Some compilers got confused by typedefs in the zlib header files.
- (szlibd.c, szlibe.c)
-
- Library
- -------
-
- Fixes bugs:
- - A header file didn't select the proper system header on all POSIX
- systems. (malloc_.h)
- - A subclass/superclass type discrepancy upset some compilers.
- (gsline.h, gsline.c, gxpdash.c)
- - Some very picky compilers didn't accept the previous definition of
- the offset_of macro. (stdpre.h)
- - Some very picky (and non-ANSI-compliant) compilers didn't like
- mixing int and enumerated types. (gsropt.h, gzstate.h, gdevmrop.c,
- gdevrrgb.c, gsrop.c, gxclist.c)
- - A cast was missing. (gslib.c)
- - The gs_setxxxtransparent procedures interpreted their argument
- backwards (i.e., as "opaque" rather than "transparent"). (gsrop.c)
- - Intersecting clipping paths didn't reset the logical operation to
- the default, causing a possible crash. (gsrop.h, gsrop.c, gxacpath.c)
- - Pattern accumulation didn't reset the logical operation to the
- default, possibly causing incorrect output. (gspcolor.c)
- - If a Type 1 character ended with a curve and a closepath, a
- microscopic line could result, causing output anomalies. (gstype1.c)
- - Stroking a path with a mix of thin and non-thin lines could cause
- extraneous lines to appear. (gxstroke.c)
- - Zero-width rectangles were painted even when fill adjustment was
- turned off. (gxpaint.c, gxstroke.c)
- - The algorithm for dividing a curve into monotonic pieces could
- produce incorrect results, causing anomalies when filling curved regions
- with zero fill adjustment. (gxpcopy.c)
- - The algorithms for outside clipping were wrong, causing some
- inside regions not to be clipped. (gxcpath.c)
- - The white pixels in halftones weren't treated as unconditionally
- opaque for RasterOp. (gxht.c, gxcht.c)
- - Images with RasterOp didn't work properly. (gdevmrop.c,
- gximage[2345].c, gxpcmap.c)
- - The library code inadvertently depended on an interpreter header
- file. (gxalloc.h, genarch.c)
- - An important optimization for stroking (recognizing portrait,
- landscape, and unscaled CTMs) was commented out. WE DON'T HAVE ANY RECORD
- OF WHY WE DID THIS, AND RESTORING IT MAY INTRODUCE NEW BUGS. (gxstroke.c)
- - Bitmap images with non-zero data_x values were passed through the
- band list incorrectly, possibly causing vertical "streaks" in the output.
- (gxcldev.h, gxclread.c)
- - If a curve had to be split twice along the same axis to make it
- monotonic, the split points were returned in the wrong order, possibly
- causing curved edges to turn into straight lines. (gxpcopy.c)
-
- Changes the debugging printout format for paths so the output can be
- processed mechanically more easily. (gxpath.c)
-
- Adds gs_glyphpath, like charpath but taking a glyph rather than a string of
- character codes. (gschar.h, gschar.c)
-
- Adds an internal concept of a "null color", a color that doesn't actually
- mark any pixels. (gscolor.h, gsdcolor.h, gxdcolor.h, gscolor.c, gxdcolor.c)
-
- Takes the next incremental steps towards passing images through the band
- list:
- - Implements the ability to pass some color mapping information
- (transfer functions, black generation, undercolor removal) through the band
- list. (gxclist.h, gxclimag.c, gxclist.c, gxclread.c)
-
- Version 4.33(limited) (11/6/96)
- =====================
-
- This release fixes yet another obscure bug in the recently rewritten fast
- loops for image rendering. (These loops have caused more problems than any
- other single module of the entire library.) It also adds preliminary
- support for CID-keyed fonts (CIDFonts only, not CMaps yet) and some library
- extensions for supporting HP-GL/2.
-
- Documentation
- -------------
-
- Adds considerable new material to the C style document. (c-style.txt)
-
- Changes -cckr to -ansi in the SGI build procedure. (make.txt)
-
- Corrects an error in the description of the .type42execchar operator.
- (gs_typ42.ps)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The 'man' pages were installed in the documentation directory as
- well as in the man directory. (unix-end.mak)
-
- Interpreter
- -----------
-
- Adds support for CID-keyed fonts. There is no CMap support yet, and some
- things are done with hacks. (int.mak, gs_cidfn.ps, gs_cmap.ps, ichar.h,
- zchar.c, zchar2.c, zchar42.c, zfont2.c, zfont42.c, zcid.c)
-
- Adds operators for accessing the new dash adaptation and dot length
- parameters in the graphics state. (gs_init.ps, zgstate.c)
-
- Library
- -------
-
- Fixes bugs:
- - The fast case of monobit image rendering could overwrite memory.
- (gximage1.c)
- - The new fast implementation of rectfill didn't check for
- fixed-point overflow. (gsdps1.c)
- - Internally, fonts with no name all appeared to have the same name,
- possibly confusing the xfont machinery. (gxccman.c)
- - A cast to remove const was omitted, upsetting some compilers.
- (gximage1.c)
- - The driver's stroke_path routine was not called if the logical
- operation was not the default one. (gxpaint.c)
-
- Adds support for CID-keyed fonts. (gsccode.h, gxfont.h)
-
- Adds a new "dash pattern adaptation" flag in the imager state. When this
- flag is set and a dash pattern is in effect, each line segment will receive
- an integral number of repetitions of the dash pattern (if necessary, rounded
- up). (gsline.h, gxline.h, gsline.c, gsstate.c, gxpdash.c)
-
- Adds a new "dot length" parameter to the imager state. If this parameter is
- non-zero, it gives a length for rendering dots (zero-length lines). See
- language.txt for details. (gsline.h, gxline.h, gsline.c, gsstate.c,
- gxstroke.c)
-
- Extends band lists so they can handle dash pattern adaptation and dot
- length. (gxcldev.h, gxclpath.h, gxclpath.c, gxclread.c)
-
- Adds a floating point emulator to allow more realistic profiling of
- configurations without a FPU. (gsfemu.c)
-
- Version 4.32(limited) (11/1/96)
- =====================
-
- This fixes a couple more bugs, most notably the infamous "pixel stripe" bug.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The documentation said that Ghostscript could not interpret
- encrypted PDF files. (language.txt)
- - A number of Ghostscript's extensions to the PostScript language
- were missing. (language.txt)
-
- Drivers
- -------
-
- Fixes bugs:
- - A compiler complained about initializing an unsigned variable with
- a negative value. (gdevx.c)
- - An off-by-1 allocation error could cause memory overwriting.
- (gdevepsc.c)
-
- Platforms
- ---------
-
- Declares a pointer 'const' that is actually only used for reading.
- (gp_unifs.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - The code for adding nominal UnderlinePosition and
- UnderlineThickness entries to FontInfo assumed (incorrectly) that all Type 1
- fonts had FontBBox entries. (gs_type1.ps)
-
- Brings CIDFont support closer to reality. It doesn't work yet, though.
- (gs_cidfn.ps, gs_fonts.ps, gs_init.ps, gs_res.ps, gs_typ42.ps)
-
- Interpreter
- -----------
-
- Removes a redundant implementation of initgraphics. (gs_init.ps)
-
- Speeds up rectfill a little for the common case (4 numbers on the stack).
- (zdps1.c)
-
- Library
- -------
-
- Fixes bugs:
- - Zero-width, 1-bit-deep, landscape or portrait images could
- overwrite memory ad lib. (gximage1.c)
- - A procedure was declared 'static' inconsistently, upsetting many
- compilers (but not gcc, which, in contradiction to the ANSI standard,
- doesn't check this properly). (gxcpath.c)
- - A local variable was initialized with a value computed from a
- variable that hadn't been set yet, leading to possibly incorrect coloring of
- the first run of pixels in images with 12 bits per sample. (gximage4.c)
- - A compiler complained about initializing an unsigned variable with
- a negative value. (shcgen.c)
- - A rounding problem could produce a vertical stripe of 1 (or on
- very large images possibly more) incorrect pixels at the right edge of a
- 1-bit-deep image. (gxdda.h, gximage1.c)
-
- Speeds up gs_rectfill substantially for the portrait/landscape case with a
- rectangular clipping region. (gsdps1.c)
-
- Adds a parameter so we can include gx_line_params in subclasses. (gzline.h)
-
- Version 4.31(limited) (10/27/96)
- =====================
-
- This is primarily a bug fix release for 4.30, which we had hoped wouldn't be
- necessary....
-
- Documentation
- -------------
-
- Fixes bugs:
- - The comment describing the order of coefficients in a CTM written
- on the band list was wrong. (gxclpath.h)
-
- Procedures
- ----------
-
- Fixes bugs:
- - bug-form.txt wasn't installed by 'make install'. (unix-end.mak)
- - The default flags in ugcclib.mak didn't take the gcc code
- generation bug into account. (ugcclib.mak)
-
- Platforms
- ---------
-
- Fixes bugs:
- - MetroWerks CodeWarrior predefines true and false, causing
- compilation errors on the Mac. (stdpre.h)
-
- Interpreter
- -----------
-
- Updates code for the change in the ENUM_PTR macros. (iscan.c)
-
- Changes the allocator to keep track of "lost" ref space separately, to allow
- an independent check on its activities. (gxalloc.h, ialloc.c, isave.c)
-
- Changes the garbage collector API slightly to allow implementation of the
- API in applications other than PostScript interpreters. (ivmspace.h,
- ireclaim.c, igc.c)
-
- Interpreter (PDF)
- -----------------
-
- Implements the PDF 1.1 BX and EX operators. (pdf_base.ps, pdf_main.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - Some (harmless) pointer incompatibilities upset some compilers.
- (szlibd.c, szlibe.c)
-
- Updates code for the change in the ENUM_PTR macros. (stream.c)
-
- Library
- -------
-
- Fixes bugs:
- - A label in the ENUM_PTR procedure generating macros was often not
- referenced, leading to compiler warnings. (gsstruct.h, gxxfont.h,
- gdevmem.c, gschar.c, gscolor2.c, gsdevice.c, gsfont0.c, gsht.c, gsstate.c,
- gxcpath.c, gximage.c)
- - Using the gstate version of setflat rather than the imager version
- caused compiler warnings (and, in some cases, errors). (gstype1.c)
- - Non-standard ImageMatrix values for banded images didn't work.
- (This wasn't actually used.) (gxclread.c)
- - imagemask with a halftone and portrait orientation colored some
- inappropriate pixels. (bug introduced in 4.30) (gximage2.c)
- - When banding, if a character straddled a band boundary the first
- time it occurred, all occurrences of it were clipped. (bug introduced in
- 4.2x or 4.30) (gxclimag.c)
- - Degenerate clipping rectangles sometimes got turned into
- non-degenerate ones by swapping the min and max coordinates. (gxcpath.c)
- - Resizing an object either allocated a new object unnecessarily
- (performance bug only), or in very rare cases could corrupt memory.
- (gsalloc.c)
- - Very small objects didn't get put on a free list when freed.
- (Performance bug only.) (gsalloc.c)
- - Some pointers were incorrectly declared 'const', upsetting some
- compilers. (gxclread.c)
-
- Adds more tracing output for -ZL. (gxclread.c)
-
- Changes the -Za tracing output slightly to aid mechanical analysis of
- allocation traces: allocation events now always include a '+', deallocation
- events always include a '-', and the address is always the address of the
- object data and not the header. (gsalloc.c, gsmemory.c)
-
- Changes the allocator to keep track of "lost" object and string space
- separately, to allow an independent check on its activities. (gxalloc.h,
- gsalloc.c)
-
- Changes the allocator to use 'memmove' in an obvious place. (gsalloc.c)
-
- Provides a garbage collector API at the library level to allow
- implementation of the API in applications other than PostScript
- interpreters. (gsgc.h)
-
- Version 4.30(limited) (10/23/96)
- =====================
-
- The main purpose of this release is to implement a substantial change in the
- "high level" image API, after which we believe this API will be stable.
-
- Documentation
- -------------
-
- Documents the changes in the begin_image and image_data device procedures.
- (drivers.txt)
-
- Drivers
- -------
-
- Speeds up the PDF writer a little by reducing the amount of allocation,
- which was causing very frequent garbage collections. (gs_pdfwr.ps,
- gdevpdft.c)
-
- Updates the PDF writer for the change in begin_image/image_data.
- (gdevpdfi.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - Some versions of the SGI IRIX compiler have a bug that causes them
- to try to expand macros that require arguments even when the macro name
- isn't followed by a left parenthesis. (gdevsgi.h, gdevsgi.c)
- - The IBM RS6000 compilers now provide <stdlib.h>, so our
- definitions of malloc and free caused a conflict. (malloc_.h)
-
- Fonts
- -----
-
- Fixes bugs:
- - Many Fontmaps included obsolete references to an old
- Helvetica-Narrow font. (Fontmap.*)
-
- Makes the GS_FONTPATH directory scanner a little more liberal about what
- files it examines: it will now examine any file whose first line begins with
- %!PS-Adobe or %!FontType. (gs_fonts.ps)
-
- To match an apparent Adobe convention, augments findfont so that if a font
- isn't in the Fontmap, it will try to load a file whose name is the same as
- the font name. (gs_fonts.ps)
-
- To make some questionable Apple font inquiry code work, augments the
- FAKEFONTS facility so that it sets the FontType of fake fonts to 1.
- (gs_fonts.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - .checkpassword, .putdeviceparams, .putdevparams, setsystemparams,
- and setuserparams didn't free the results byte array, causing a memory leak
- (until the next garbage collection). (zdevice.c, ziodev.c, zusparam.c)
-
- Library
- -------
-
- Fixes bugs:
- - The code for emulating floating point multiplication with
- conversion to fixed point didn't detect overflow correctly, which could
- produce incorrect results instead of a limitcheck. (gsmisc.c)
- - A macro cast a pointer incorrectly, leading to spurious compiler
- warnings. (gxfixed.h)
- - The code for emulating fixed-to-float conversion computed the
- exponent incorrectly. (gsmisc.c)
- - The algorithm for advancing a DDA a given number of steps (not
- actually used anywhere before this version) was wrong. (gxdda.h)
- - The clipping box returned by clipping devices was incorrect,
- causing parts of the page to disappear. (bug introduced in 4.20)
- (gxcpath.c)
-
- Changes the begin_image and image_data device procedures:
- - begin_image now takes an optional subrectangle instead of a set of
- shape flags.
- - image_data now always takes complete rows of pixels, takes a
- source X offset, and returns 1 when it has received all the data.
-
- The change in begin_image and image_data is a NON-BACKWARD-COMPATIBLE CHANGE
- IN A PUBLIC INTERFACE; however, this interface was still designated "subject
- to change", per the notes for release 3.67 and the documentation in
- drivers.txt. (gsiparam.h, gxclpath.h, gxdda.h, gxdevice.h, gximage.h,
- gdevbbox.c, gdevnfwd.c, gsimage.c, gxclimag.c, gxclread.c, gximage.c,
- gximage?.c)
-
- Version 4.21(limited) (10/17/96)
- =====================
-
- The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The Ghostscript man page had a .TH in the middle. (gs.1)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The shared version of zlib was always called libgz; on most
- systems, it is now called libz (but not on Red Hat Linux, where libz is a
- library for dealing with time zones). (*.mak, gs.mak, libpng.mak, zlib.mak)
- - The pdf2dsc.1 man page wasn't installed on Unix systems.
- (unix-end.mak)
- - font2c generated procedures named gsf_xxx, but genconf assumed
- they were named gs_f_xxx. (int.mak)
-
- Drivers
- -------
-
- Updates the user-contributed LBP-8II driver to correct unspecified problems.
- (gdevlbp8.c)
-
- Adds a user-contributed driver for Avance Logic SuperVGA cards.
- (gdevsvga.c, devs.mak)
-
- Platforms
- ---------
-
- Fixes bugs:
- - On Windows NT, a 32-bit parameter was truncated to 16 bits,
- preventing drawing of scroll bars of the image window when the window is
- uncovered. (dwimg.cpp)
-
- Fonts
- -----
-
- Fixes bugs:
- - The free URW Grotesk and Antiqua fonts were omitted from the
- distribution.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Defining a new global instance of a built-in resource
- (ColorRendering, ColorSpace, Form, Halftone, Pattern, ProcSet) caused an
- invalidaccess error. (gs_res.ps)
- - pathbbox with no current path left an extra item on the stack when
- the error occurred. (gs_init.ps)
- - findresource for an undefined resource instance didn't preserve
- the contents of the stack. (gs_res.ps)
-
- Adds a new file providing a procedural interface with a very rudimentary
- form of job encapsulation. (gserver.c)
-
- Changes the initial value of MaxOpStack to 20000, for the sake of a few
- badly-behaved files. (gs_init.ps, pdf_base.ps)
-
- Library
- -------
-
- Fixes bugs:
- - If the image operators failed to allocated their bookkeeping
- structure, the result was a crash rather than VMerror. (gximage.c)
- - gx_default_fill_triangle (currently used only to implement the
- fastest case of stroke) had a typo that could cause a numeric exception or
- incorrect output, and another typo that could produce incorrect output.
- (gdevddrw.c)
- - When banding, if the first occurrence of a character fell partly
- off the page, all occurrences of that character on the page could be clipped
- or mangled. (gxclbits.c, gxclimag.c)
- - When testing whether it's worthwhile compressing a bitmap for
- banding, the compressor was allowed to generate a lot more output than
- needed to make the test. (gxclbits.c)
- - Certain cases of unrotated gray-scale images dropped the first or
- last pixel of each scan line. (gximage2.c)
- - In rare cases, a run of pixels in a image could get erroneously
- displayed in the same color as the previous run, because of a cache
- bookkeeping bug. (gximage3.c)
- - The sample driver for the library had gotten inconsistent with a
- header file. (gslib.c)
- - A declaration was followed by an extraneous semicolon, which upset
- some compilers. (gxht.h)
- - Missing parentheses caused a test for thin lines to be incorrect.
- (gxstroke.c)
-
- Version 4.20(limited) (10/13/96)
- =====================
-
- This release has internal changes for future support of banded image
- processing, but no externally visible changes. Its primary purpose is to
- incorporate speedups for clipped images. It does *not* incorporate fixes
- for all problems reported in 4.0x or 4.10.
-
- Documentation
- -------------
-
- Documents the new get_clipping_box device procedure. (drivers.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - There were many, many minor inconsistencies between the makefiles
- and the source code. (We finally have an automated tool to detect these.)
- (devs.mak, int.mak, lib.mak, unixtail.mak; gsutil.c, zwppm.c)
- - Some makefile rules weren't properly terminated by a blank line.
- (lib.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The comments in gslp.ps had gotten out of date. (gslp.ps)
-
- Adds --no-eject-file and --no-eject-formfeed switches to gslp.ps, to allow
- packing files in multi-column printouts. (gslp.ps)
-
- Drivers
- -------
-
- Adds a user-contributed driver for the Epson LP-8000 laser printer.
- (gdevlp8k.c)
-
- Adds a DisplayMode parameter to the vgalib device. (gdevvglb.c)
-
- Removes the requirement of typing a character at the end of each page using
- the vgalib driver. THIS IS A USER-VISIBLE, NON-BACKWARD-COMPATIBLE CHANGE.
- (gdevvglb.c)
-
- Interpreter
- -----------
-
- Updates code to accommodate the new get_clipping_box device procedure.
- (zupath.c)
-
- Library
- -------
-
- Fixes bugs:
- - When a CTM was passed through the band list, it didn't get
- translated to match the band coordinate system. (This had no effect,
- because the translation part of the CTM was never used.) (gxclread.c)
-
- Adds a ',' debugging switch to disable high-level operations when banding.
- (gxclpath.c)
-
- Adds an optional get_clipping_box device procedure, so that filling and
- stroking can clip more aggressively. (gdevmem.h, gdevprn.h, gxdevice.h,
- gxpaint.h, gxpath.h, gzacpath.h, gdevdflt.c, gdevht.c, gdevnfwd.c,
- gxacpath.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c, gxfill.c,
- gxstroke.c)
-
- Speeds up clipped filling and stroking, by checking against the device
- clipping box. (gxfill.c, gxstroke.c)
-
- Adds the ability to clip with a rectangle a clipping path being accumulated,
- and uses it to do more aggressive clipping when banding. (gzacpath.h,
- gxacpath.c, gxclread.c)
-
- Speeds up clipping of objects lying partly above or below the clipping
- region. (gxcpath.c)
-
- Speeds up clipping vertically-oriented objects (such as 90 degree rotated
- images or vertical rectangles) with convex clipping regions, by checking for
- vertical rectangles contained in multiple clipping rectangles. (gxcpath.c)
-
- Speeds up the handling of 90 degree rotated gray-scale images. (gximage2.c)
-
- Enhances the band list so that it can contain commands for a range of bands,
- not just a single band or all bands. (gxcldev.h, gxclist.h, gxclbits.c,
- gxclist.c, gxclread.c)
-
- Adds an operation to the DDA structure, for eventual support of clipped
- images. (gxdda.h)
-
- Factors out some macros useful for generating bit-transformation tables.
- (gsbittab.h, gsbittab.c, gsflip.c)
-
- Version 4.10(limited) (9/25/96)
- =====================
-
- This release adds local garbage collection, and a number of performance
- improvements for garbage collection in general. We will support it for one
- or two OEMs, but it is not a public release.
-
- Documentation
- -------------
-
- Moves documentation for all releases before 4.0 to history3.txt. (NEWS,
- history3.txt)
-
- Utilities
- ---------
-
- Fixes bugs:
- - pdf2dsc.ps didn't have a proper license notice. (pdf2dsc.ps)
-
- Drivers
- -------
-
- Adds a psgray driver, like psmono, to produce 8-bit gray PostScript (level
- 1) images. (devs.mak, *.mak, gdevpsim.c)
-
- Changes the psmono driver to allow runs of up to 255 repeated bytes.
- (gdevpsim.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - setdevice erased the page even if this wasn't necessary.
- (zdevice.c)
-
- Speeds up the garbage collector, primarily by speeding up pointer
- relocation. (int.mak, ipacked.h, iref.h, ialloc.c, igc.c, igcref.c)
-
- Actually implements local garbage collection. (igc.h, ivmspace.h, igc.c,
- igcref.c, igcstr.c, ireclaim.c)
-
- Adds some additional error checking for the -Z? switch. (ilocate.c)
-
- Moves a utility for color mapping from the interpreter to the library.
- (icolor.h, zcolor.c)
-
- Adds a MinScreenLevels user parameter. (zusparam.c)
-
- Interpreter (PDF)
- -----------------
-
- Adds partial support for the PDF 1.2 gs operator, reverse engineered from a
- PDF 1.2 file. (pdf_draw.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The test for "thin" stroked lines incorrectly claimed some
- non-thin lines were thin. (gxstroke.c)
- - The computations for halftone cells didn't work for non-square
- pixels. (gxdht.h, gsht.c, gsht1.c, gshtscr.c)
-
- Speeds up the garbage collector a little. (gsstruct.h, gxalloc.h,
- gxfcache.h, gsfont.c)
-
- Replaces references to private statically allocated color spaces with
- references to shared dynamically allocated ones, which are guaranteed to be
- fully filled-in. (gscie.c)
-
- Moves a utility for color mapping from the interpreter to the library.
- (gxfmap.h, gxcmap.c)
-
- Makes available an imager analogue of setmatrix. (gscoord.h, gscoord.c)
-
- Adds a parameter to control the minimum number of halftone screen levels.
- If a halftone cell has fewer pixels than this number, it will be replicated
- (similar to what AccurateScreens does) until the replicated screen has
- enough levels. (gxht.h, gshtscr.c)
-
- Version 4.03 (9/23/96)
- ============
-
- This was an emergency re-release of 4.02 to fix the stdin redirection
- problem. It has essentially no other changes.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Solaris 2.x has /usr/ucb/install, not installbsd. (make.txt)
-
- Updates current.txt to mention the ability to share libpng and libgz.
- (current.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - A rule assumed that the makefile was named `makefile'.
- (unixtail.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The stcolor drivers had an off-by-1 error that could cause them to
- write into unallocated memory. (gdevstc.c)
- - The Imagen driver wouldn't compile with gcc. (gdevimgn.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - The Solaris fontmap had gotten out of date. (Fontmap.Sol)
-
- Streams
- -------
-
- Fixes bugs:
- - The test for stdin being non-seekable could leave the file error
- flag set, which caused an infinite loop when trying to read from the file
- later. (sfile.c, sfileno.c)
-
- Version 4.02 (9/19/96)
- ============
-
- This release fixes a few more bugs, and adds the ability to read encrypted
- PDF files and some PDF 1.2 files.
-
- This release was withdrawn after a few days because the stdin redirection
- fix, which was made at the last minute, cause Ghostview to hang.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The list of required support files was incorrect. (install.txt)
- - The descriptions of file name lookup weren't accurate. (use.txt)
- - A J should have been an H. (gxbitmap.h)
-
- Updates the documentation about encrypted PDF files. (new-user.txt)
-
- Documents what the 13 base PDF fonts are. (ps2pdf.txt)
-
- Fixes a tiny typo. (c-style.txt)
-
- Adds a user-contributed man page for the new pdf2dsc script. (pdf2dsc.1)
-
- Updates the government restricted rights notice in the Aladdin Ghostscript
- Free Public License. (PUBLIC)
-
- Adds the URL of test files to the bug report form. (new-user.txt)
-
- Puts the bug reporting form in a separate file. (readme, bug-form.txt,
- new-user.txt)
-
- Notes that map_xxx_color procedures should not return gx_no_color_index.
- (drivers.txt)
-
- Notes that Ghostscript supports the Flate filters. (language.txt)
-
- Documents the use of the system libpng and zlib. (make.txt, gs.mak)
-
- Notes that Borland C++ 5.0 and 5.01 will not compile Ghostscript correctly.
- (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Using both DELAYBIND and SAFER caused problems. (pstotext uses
- DELAYBIND.) (gs_init.ps)
-
- Utilities
- ---------
-
- Fixes bugs:
- - Some pdf2ps machinery interfered with the PDF interpreter.
- (pdf_2ps.ps, pdf_main.ps)
- - In the output of pdf2ps, page numbers in link destinations were
- too high by 1. (pdf_main.ps)
- - viewpbm didn't handle value ranges other than [0..255] correctly.
- (viewpbm.ps)
-
- Adds a user-contributed shell script to invoke pdf2dsc.ps. (pdf2dsc,
- unix-end.mak)
-
- Adds a switch to the genconf utility to set the prefix for generated
- procedure names. (genconf.c)
-
- Adds the option of using system libraries (possibly shared) for libpng
- and/or zlib. (*head.mak, msc*.mak, os2.mak, tccommon.mak, wccommon.mak;
- libpng.mak, zlib.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The X11 display devices ignored the -DA4 compile-time option.
- (gdevx.c)
- - The garbage collector could scramble the state of the CGM drivers.
- (gxdevice.h, gdevcgm.c)
- - An identifier of more than 31 characters upset the VAX DEC C
- compiler. (gdevcgml.h, gdevcgml.c)
- - In case of an error in trying to set the CoreDistVersion distiller
- parameter, a variable could be used without initialization. (gdevpdfp.c)
- - When DEBUG is selected, the X Windows driver referenced _Xdebug,
- which is not defined in (at least the VMS version of) DECWindows. (x_.h,
- gdevxini.c)
- - Some map_cmyk_color implementations could return "transparent".
- (gdevbit.c)
- - Setting GraphicsAlphaBits or TextAlphaBits in the P*M drivers
- caused an error. (gdevpbm.c)
- - If a user cancelled printing under MS Windows, a confusing error
- resulted, and a temporary file wasn't deleted. (gdevwpr2.c)
- - The map_color_rgb procedure for the bit devices produced incorrect
- results. (This probably had no effect in practice.) (gdevbit.c)
- - The os2prn device produced incorrect output. (gdevos2p.c)
- - The OS/2 PM device didn't detect PM applications correctly.
- (gdevpm.c)
- - The MS Windows printer driver didn't automatically detect the
- printer's color capabilities. (gdevwpr2.c)
- - The BJC-610 driver didn't print at 720 dpi. (gdevcdj.c)
- - The static prototypes of many devices didn't include the far_data
- keyword. (gdev3852.c, gdev4081.c, gdevbgi.c, gdevcgm.c, gdevht.c,
- gdevimgn.c, gdevl256.c, gdevmrop.c, gdevn533.c, gdevnfwd.c, gdevnp6.c,
- gdevo182.c, gdevpcfb.c, gdevpdf.c, gdevpe.c, gdevpm.c, gdevs3ga.c,
- gdevsnfb.c, gdevsppr.c, gdevsun.c, gdevsvga.c, gdevtknk.c, gdevvglb.c,
- gdevwddb.c, gdevwprn.c, gdevx.c, gdevxalt.c)
- - The (original) deskjet driver collapsed print lines towards the
- left margin. (gdevdjet.c)
-
- Adds to the pgm/pgnm/ppm/pnm[raw] drivers the ability to set the maximum
- pixel value, by setting any of the Gray/Red/Green/BlueValues device
- parameters. (gdevpbm.c)
-
- Adds pkm[raw] drivers, which do all their internal computations in CMYK and
- convert the data to RGB as they write the file. (gdevpbm.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The VMS script referred to old versions of the third-party
- libraries. (vms.mak)
- - Under VMS with DEC C, attempting to open a new file fails.
- (gp_vms.c)
- - If you tried to print (gp_printfile) under Windows on a system
- with no printers installed, Ghostscript caused a GPF. (gp_mswin.c)
-
- Restores support for a non-DLL MS Windows platform. (bcwin32.mak,
- dwnodll.cpp)
-
- Adds a new MS Windows DLL call, gsdll_get_bitmap. (gsdll16.def,
- gsdll32.def, dll.txt, gdevwdib.c)
-
- Fixes a variety of other small Windows- and OS/2-related problems, mostly
- related to printing. (gp_mswin.h, dpmainc.c, dwmain.cpp, dwmainc.cpp,
- gdevmswn.c, gdevpm.c, gdevwpr2.c, gp_mswin.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The value of /newerror in $error was true at the end of
- initialization. We now reset it after each internal use of stopped if
- necessary. (gs_dps1.ps, gs_fform.ps, gs_fonts.ps, gs_init.ps, gs_pdf.ps,
- gs_res.ps, gs_type1.ps)
- - setpagedevice (and finddevice) didn't recognize Default.
- (gs_init.ps)
- - When running with -dNODISPLAY, calling gssetresolution would cause
- a crash. (gs_init.ps)
- - A particular combination of save, .forgetsave, and garbage
- collection could cause a memory access error in restore. (isave.c)
- - Some references to systemdict were affected if a user redefined
- the name /systemdict. (gs_cmdl.ps, gs_fonts.ps, gs_kanji.ps, gs_dps1.ps,
- gs_init.ps, gs_res.ps, gs_statd.ps, gs_type1.ps)
- - The insideness testing operators caused an invalid memory access.
- (drivers.txt, zupath.c)
- - If a readline reached an input buffer boundary between the \r and
- \n of a 2-character EOL, an error could occur. (zfileio.c)
- - setdevparams caused an error. (gs_lev2.ps)
-
- Changes file names beginning with ./ or ../ so they are recognized as
- "absolute" and not subject to the search path. (gp_dosfs.c, gp_ntfs.c,
- gp_os2.c, gp_unifn.c)
-
- Changes the exit code for -h or --help from 0 to 1, so an invoking program
- will keep the output around for the user to look at. (imainarg.c)
-
- Adds the FlateEncode and FlateDecode filters; adds PNG pixel prediction to
- the LZW filters. These additions are required for PDF 1.2 and will be part
- of PostScript Level 3. (int.mak, lib.mak, zfdecode.c, zfilter2.c, zfzlib.c,
- zfpngp.c [deleted])
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - The copyright notices on some files didn't mention the Aladdin
- free license. (pdf_*.ps)
- - Some references to systemdict were affected if a user redefined
- the name /systemdict. (pdf_font.ps)
- - The value of /newerror in $error was true at the end of
- initialization. We now reset it after each internal use of stopped if
- necessary. (pdf_main.ps)
- - stdin redirection failed for PDF files even if the new stdin was
- seekable. (pdf_main.ps)
- - The Rotate key rotated pages in the wrong direction.
- (pdf_main.ps)
-
- Adds a minimal "security socket" to the interpreter. This does not include
- any actual decryption code; such code is available elsewhere (see
- new-user.txt). (int.mak, pdf_base.ps, pdf_main.ps, pdf_sec.ps)
-
- Adds a PDF 1.2 capability:
- - The destination in a Dest array can be a page number as well as a
- page object. (pdf_main.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - stdin was assumed to be non-seekable. (sfile.c, sfileno.c)
-
- Library
- -------
-
- Fixes bugs:
- - Garbage collection could corrupt a pointer in Type 0 fonts.
- (gxfont0.h, gsfont0.c)
- - When applying hints to a Type 1 font outline, the last point could
- sometimes get moved twice, causing output anomalies. (gxhint3.c)
- - An #include needed for debugging was missing. (gxcmap.h)
- - Graphics states included a no-longer-used private color space
- object. (gsstate.c)
- - Images could get clipped randomly in the X direction. (I don't
- understand why this problem hasn't shown up more often, since it's been
- there since release 4.00.) (gximage.c)
- - The arct and arcto operators failed to draw the line to the
- starting point of the arc. (bug introduced in 4.01) (gspath1.c)
- - Prefix subclasses of simple structures caused an invalid memory
- access. (gsstruct.h)
- - The variable fheight was sometimes unused. (gstype1.c)
- - igcd and imod didn't have prototypes in an appropriate header
- file, and were declared extern in several places. (gsdcolor.h, gsline.h,
- gxarith.h, gxdht.h, gsht.c, gshtscr.c, gsimage.c, gsline.c, gstype1.c,
- gxclimag.c)
- - When using a non-identity RenderTable in a CIE rendering
- dictionary, all colors came out too light. (gscie.c)
- - When using anti-aliased graphics, stroked lines were rendered too
- thin. (gspaint.c)
- - The default map_cmyk_color implementations could return
- "transparent". (gxcmap.c)
- - The number of bits of alpha requested when rendering anti-aliased
- characters could exceed 4. (gschar.c)
- - Multi-screen halftones could cause errors or infinite looping when
- banding. (This problem predates 4.0; I don't know why it didn't show up
- before.) (gxcldev.h, gxclist.c, gxclread.c)
- - Skewed or rotated gray-scale images, or masks with a halftoned
- color, omitted one line of pixels and displaced the image by one pixel.
- (gximage2.c)
-
- Adds an implementation of realloc, for systems that don't have one that
- works. I don't know how to determine this automatically, so for the moment,
- the code uses our own implementation on Linux (where realloc is known to be
- broken, at least in some releases) and nowhere else. (malloc_.h,
- gsmemory.c, gsmisc.c)
-
- Removes the "OLD" algorithms from the Type 1 hinting source code, since they
- are no longer executed. (If necessary, they can be retrieved from an older
- version.) (gxhint3.c)
-
- Version 4.01 (7/10/96)
- ============
-
- This fixes a few minor bugs discovered since the 4.0 release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - An installation directory name was wrong. (make.txt,
- unix-lpr.txt)
- - A URL was wrong. (devices.txt)
- - A reference to use.doc hadn't been updated. (gs.1)
- - Some references to /usr/local/lib hadn't been updated. (gs.1)
- - The NEWS file and history* files still referred to *.doc rather
- than *.txt. (NEWS, history*.txt)
-
- Adds a note about compilation on Digital Unix. (make.txt)
-
- Clarifies that calling gs_exit calls gs_finit automatically. (imain.h)
-
- Adds a pointer to the PDF encryption patch. (Ridiculous U.S. export control
- laws don't allow including the patch itself in the main fileset.)
- (new-user.txt)
-
- Adds a help file for VMS. (gs-vms.hlp)
-
- Procedures
- ----------
-
- Fixes bugs:
- - vms.mak had gotten out of sync with the makefiles (again).
- (vms.mak)
- - DEVICE{WIDTH,HEIGHT}POINTS didn't override PAPERSIZE.
- (gs_init.ps)
- - The Microsoft C makefiles had gotten out of date. (msc.mak)
-
- The (few) GNU-Licensed drivers were accidentally omitted from the fileset.
-
- Modifies a makefile for greater reusability. (watclib.mak)
-
- Adds a 'debug' target for making Unix debugging configurations.
- (unix-end.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - Some uses of 'run' should be changed to runlibfile. (bdftops.ps,
- impath.ps, markhint.ps, packfile.ps, showchar.ps, waterfal.ps, wftopfa.ps,
- wrfont.ps)
- - Some debugging code hadn't been removed. (gslp.ps)
-
- Adds a new utility, viewcmyk.ps, for viewing 4-bit CMYK data. (psfiles.txt,
- unix-end.mak, viewcmyk.ps)
-
- Improves pdf2dsc by including Title and CreationDate DSC comments (these are
- displayed by Ghostview) and reducing the size of typical output files by a
- factor of about 3. (pdf2dsc.ps)
-
- Incorporates major changes (claimed to be improvements) to ps2ascii
- contributed by a user. If you have problems with it, please contact him,
- not Aladdin. (ps2ascii.ps)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The X value of a bounding box could be computed incorrectly.
- (gdevbbox.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The Windows DLL sometimes didn't clean up properly. (dll.txt,
- dpmainc.c, dwdll.cpp, dwmain.cpp, dwmainc.cpp, gsdll.c, gsdll.h)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Reading from a filter could hang forever, because a buffer was
- allocated 1 byte too small. (zfilter.c)
- - The search path could become garbage under some circumstances.
- (imain.c)
- - A dangling reference to a stack-allocated variable could corrupt
- memory if a client mixed interpreter calls and direct C calls. (interp.c)
- - Printing an object to a procedure-based filter could cause an
- invalid memory access. (zfileio.c)
-
- Library
- -------
-
- Fixes bugs:
- - Setting parameters for an unopened device could cause an access
- error or invoke the wrong put_params procedure. (gsdparam.c)
- - Reading from a filter could hang forever, because a buffer was
- allocated 1 byte too small. (stream.h)
- - If the current device was the nullpage device, doing a [g]save,
- selecting a different device, and doing a [g]restore caused an error.
- (gsdparam.c)
-
- Adds the ability to append arcs without the initial lineto, for PCL
- emulation. (gspath.h, gspath1.c)
-
- Version 4.0 (6/28/96)
- ===========
-
- This is the first public release since 3.53, with a few more last-minute
- patches beyond 3.70.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Many makefiles still referred to .doc files rather than .txt.
- (cfonts.mak, devs.mak, gs.mak, int.mak, libpng.mak, unix-end.mak, watc.mak,
- watcwin.mak, wccommon.mak, zlib.mak)
- - Some FONTPATH-related information was out of date. (use.txt)
- - The installation directory for fonts was incorrect. (install.txt)
- - The libpng and zlib versions were out of date. (libpng.mak,
- zlib.mak)
- - Some information about GSview was incorrect or incomplete.
- (new-user.txt)
- - make.txt said it described installation as well as building.
- (make.txt)
-
- Notes that the current release of zlib won't compile and link correctly with
- Sun cc. (make.txt)
-
- Adds a little more detail to the C style document. (c-style.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some documentation files weren't installed. (unix-end.mak)
- - Some dependencies were incorrect. (bcwin32.mak)
- - 'make begin' and 'make clean' deleted too many and/or the wrong
- files. (bcwin.mak, bcwin32.mak)
- - libpng.mak didn't work with libpng version 0.89c. (libpng.mak)
- - -d<var>=<name> was equivalent to -d<var>=/<name>, and there was no
- way to set a variable to true, false, or null. (use.txt, gs_init.ps,
- iinit.c, imainarg.c)
-
- Removes the modules.lis file, which is no longer used.
-
- Undoes detecting automatically the need to run tar_cat -- the mechanism
- didn't work, and caused confusion. (unix-end.mak)
-
- Updates the makefiles to libpng version 0.89, but allows them to work with
- either 0.88 or 0.89. (*.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - Showing the details of a protected font caused an error.
- (markhint.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - A copyright notice was wrong. (gs_pdfwr.ps)
- - PDF link annotations could get written with two Dest keys.
- (gdevpdfm.c)
- - MakeProcInstance and FreeProcInstance were called on platforms
- where it wasn't appropriate. (gdevwpr2.c, gdevwprn.c, gp_mswin.c)
- - On X servers that return very large values for the "virtual
- screen" size in millimeters but correct values for the screen size in
- pixels, a rangecheck could occur. (gdevxini.c)
- - The bounding box device could return garbage if stroke or fill was
- ever invoked with an empty path. (gdevbbox.c)
-
- Replaces the LBP8 driver with a revised one contributed by a user.
- (gdevlbp8.c, devs.mak)
-
- Platforms
- ---------
-
- Fixes bugs:
- - Some Windows menu parameters were incorrect. (gsdll16.rc,
- gsdll32.rc)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - .getdevparams sometimes returned duplicate entries for /Type.
- (ziodev2.c)
- - File names weren't parsed or concatenated properly on all
- platforms. (gs_fonts.ps, zfile.c)
- - Filter lookahead caused problems with special files. (zfproc.c)
- - If a TransformPQR procedure in a CIE color rendering dictionary
- didn't pop its 4 array arguments, an error occurred. (gs_lev2.ps, zcrd.c)
-
- Streams
- -------
-
- Fixes bugs:
- - Filter lookahead caused problems with special files. (bug
- introduced in 3.70) (stream.h)
-
- Library
- -------
-
- Fixes bugs:
- - .getdevparams sometimes returned duplicate entries for /Type.
- (gxiodev.h, gsiodev.c)
-
- Versions before 4.0
- ===================
-
- See the files history3.txt, history2.txt, and history1.txt.
-